如果进程 ID 不存在,如何防止脚本死亡?

如果进程 ID 不存在,如何防止脚本死亡?

我在 Ubuntu Linux 14.04 上使用 bash shell。我有这个脚本...

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"

因“进程不存在”错误而终止,并且脚本不会继续(我看不到以下 echo 语句)。即使进程不再存在,如何使我的脚本继续运行?

答案1

绕过 errexit 设置而不关闭它的快速方法是使命令返回成功。

例子:

set -e
false  # script exits here

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

所以也许可以尝试

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

相关内容