Answers:
您可以执行以下操作,这将检查进程是否每5秒运行一次并采取适当的措施:
while true; do
if ps -ef | grep -q '[l]ong-running-process'; then
sleep 5
else
sudo poweroff
fi
done
请注意grep
表达式中的方括号。这是为了确保该grep
过程在ps
列表中结束时不会被匹配。用方括号将任何单个字符括起来就足够了。
我一直都这样做。
&&
命令。fg && shutdown -h now
到:
或者,您可以按照其他答案中的建议进行轮询,如下所示:
while ps -p $PID ; do sleep 5 ; done ; shutdown -h now
如果您知道pid,则可以运行以下命令:
while ps -p $PID; sleep 5; done; shutdown -h now
要在没有ps回声的情况下运行,请执行以下操作:
while ps -p $PID >/dev/null; sleep 5; done; shutdown -h now
最后在没有任何输出的情况下在后台运行它:
(while ps -p $PID >/dev/null; sleep 5; done; shutdown -h now ) &
Scott的解决方案是一个很好的解决方案,但是grep
,如果您已经知道pid,那么就无需反复进行。而且输入起来要快得多。
&&
只有在上一个命令成功执行后才能运行。如果您希望它即使命令失败也可以运行,请;
改用。