使用Until在进程终止时重新启动进程

时间:2010-07-30 05:18:51

标签: bash

我读了这个问题: “How do I write a bash script to restart a process if it dies"

解决方案是:

until myserver; do
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
done

这适用于从脚本启动的Tomcat / Jetty进程吗?

我是否使用“kill”测试成功以查看进程是否重新启动?

2 个答案:

答案 0 :(得分: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循环,尝试使用失败的“虚拟”。

答案 1 :(得分:2)

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

done