2010-07-30 30 views

回答

2
while true 
do 
    if pgrep jett[y] 1>/dev/null;then 
    sleep 1 
    else 
    # restart your program here 
    fi 

done 
+0

谢谢。我没有检测到任何进程。此外,我真的很想知道最初的帖子是否有效。 – Zlowrider 2010-07-30 06:32:43

3

如果脚本返回answer at that link中指定的退出代码,则它应该有效。如果你回去再读这个答案,它意味着,你不应该使用kill。使用until将测试启动,因为失败的启动应返回非零退出代码。将“myserver”替换为脚本的名称。

你的脚本可以有处理各种信号和其他条件的陷阱。那些陷阱处理程序可以设置适当的退出代码。

这是演示。子shell (echo "running 'dummy'"; sleep 2; exit $result)是你的脚本一个替身:

result=0 
until (echo "running 'dummy'"; sleep 2; exit $result) 
do 
    echo "Server 'dummy' crashed with exit code $?. Respawning.." >&2 
    sleep 1 
done 

通过设置result=1并再次运行until环路与一个失败的“虚拟”试试吧。

相关问题