我试图通过pid获取状态是否正在运行的输出。当我将以下内容添加到脚本中时,它只输出第一个echo。该过程是否已被杀死。我在第一个if中缺少什么?
status() {
if [ 'ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep' ];
echo -e $"$SERVICE1 is currently running \n "
else
echo -e $"$SERVICE1 is not running \n "
RETVAL=$?
echo
fi
fi
return $RETVAL
}
答案 0 :(得分:1)
[
是命令,它是具有必需结束]
的“test”命令的别名。 bash中的if
语句测试命令的退出状态。在您的情况下,您希望测试管道的退出状态,而不是使用测试。
if ps auxww | grep $APPLICATION | grep $SERVICE1 | gawk "{print $2}" | grep -v grep; then
...
fi
您通常不希望以这种方式解析ps
的输出。相反,如果可用,请使用pgrep
:
if pgrep -f "$APPLICATION.*$SERVICE1"; then
...
fi