![프로세스 ID가 존재하지 않는 경우 스크립트가 종료되는 것을 방지하는 방법은 무엇입니까?](https://linux55.com/image/119367/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20ID%EA%B0%80%20%EC%A1%B4%EC%9E%AC%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20%EC%A2%85%EB%A3%8C%EB%90%98%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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