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