프로세스 ID가 존재하지 않는 경우 스크립트가 종료되는 것을 방지하는 방법은 무엇입니까?

프로세스 ID가 존재하지 않는 경우 스크립트가 종료되는 것을 방지하는 방법은 무엇입니까?

Ubuntu Linux 14.04에서 bash 쉘을 사용하고 있습니다. 이 스크립트가 있습니다 ...

SIDEKIQ_PID="$APP_ROOT/tmp/sidekiq.pid"
SIDEKIQ_STOP_CMD="cd $APP_ROOT && bundle exec sidekiqctl stop $SIDEKIQ_PID 0"
...
    su - $USER -c "$SIDEKIQ_STOP_CMD"
    echo "Stopped sidekiq"

내가 알아차린 것은 내 파일 "$SIDEKIQ_PID"에 정의된 PID가 더 이상 존재하지 않으면 다음 줄이

su - $USER -c "$SIDEKIQ_STOP_CMD"

"프로세스가 존재하지 않습니다" 오류로 종료되고 스크립트가 계속되지 않습니다(다음 에코 문을 볼 수 없습니다). 프로세스가 더 이상 존재하지 않는 경우에도 스크립트가 계속 실행되도록 하려면 어떻게 해야 합니까?

답변1

errexit 설정을 끄지 않고 우회하는 빠른 방법은 명령이 성공하도록 하는 것입니다.

예:

set -e
false  # script exits here

그리고

set -e
false || true   # script no longer exits

그러니 시도해 보세요.

su - $USER -c "$SIDEKIQ_STOP_CMD" || true

관련 정보