如果可执行文件死了,如何重新启动

我正在寻找一种方法来监视一个进程,并重新启动可执行文件,如果进程死于任何原因。 Linux有一个内置的工具可以做到这一点?

如果它是从init启动的,你可以通过init重新生成它。 将进程的操作设置为“重新生成”您想要进程的运行级别。

我以前回答过类似的问题 。

在你的情况下:

#!/bin/bash while ! <<command>> do sleep 1 echo "Restarting program..." done 

用你想要执行的命令replace<<command>> 。 该过程必须完成退出码为零,以打破循环。 否则,由脚本重新启动。

如果它死了,你只想重启它吗? 这个问题是它不能处理冻结的情况。 所以只是检查过程并不总是有帮助。 所以,如果这是一个Web服务器,你想有一个脚本从用户的angular度来检查它。

如果您设置了Nagios监控,则可以使用事件处理程序 。 这些只是您编写的脚本,在服务closures时运行,所以如果网站closures,您可以重新启动某些类似Apache的脚本。

取决于发行版,但是我们已经成功地使用“monit”来完成这个任务。 这很容易。 您可以编写自己的检查,监视进程PID等。

示例monitrc文件:

 check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/ssh start" stop program "/etc/init.d/ssh stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout 

为什么不是一个简单的bash脚本?

 #!/usr/bin/bash while `true` do xeyes done 

用您select的程序replacexeyes。

简答 :不,你必须自己做。

长的答案 :您将需要一个父进程来启动它,然后继续检查它是否有效,并在需要时重新启动它。

你可以使用daemontools来pipe理它。