我正在使用 CentOS 7。我正在尝试在脚本变量中捕获进程的“主 PID”。这是我的脚本
#!/bin/sh
set -e
PID="$APP_ROOT/shared/pids/puma.pid"
echo "before ..."
MASTER_PID=`pgrep -f '^([^ ]*/)?puma '`
echo "after ..."
xxx
但是,永远不会打印出“after ...”这个词。这条线有点东西
MASTER_PID=`pgrep -f '^([^ ]*/)?puma '`
这导致事情表现不佳,尤其是在没有运行 puma 进程的情况下。有谁知道重写上述内容的方法,以便我可以捕获我的主 PID,或者如果它不存在,至少允许执行传递到下一行?
set -e
如果命令以非零状态退出,则立即退出。由于
pgrep
没有匹配时失败,因此PID
您无法执行echo "after"
语句。我认为,删除
set -e
应该可以解决您的问题。如果要保留
set -e
,则需要通过以下方式防止 pgrep 失败: