进程崩溃时自动重新启动

进程崩溃时自动重新启动

我有一个应用程序需要在操作系统启动时自动启动。我在 CentOS 6 中运行,因此我使用放置在/etc/init.d.到目前为止,这一切都很好并且有效。

现在......除此之外,我想要的是,如果我的应用程序崩溃(错误退出),我希望它能够自动再次启动。理想情况下,甚至可以定义最大尝试次数。在 Mac 的 Info.plist 中有一些键,KeepAlive 因为我已经开始chkconfig工作了,所以我想知道是否可以用它做点什么。

我知道有http://mmonit.com/monit/但对于我的需要来说可能太多了。

答案1

如果您控制 init.d 脚本来启动此进程,您可能只想将进程的执行包装在 init.d 脚本中,如下所示:

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

这将使您的进程基本上永远处于直到循环中,每次它终止时。计数等可以这样引入:

cnt=0
max=3
until myserver; do
    let cnt=cnt+1
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
    [ $cnt = $max ] && exit;
done

相关内容