Answers:
如果它是从init启动的,则可以通过init重新生成它。将流程的操作设置为“重生”以获取所需的流程运行级别。
在您的情况下:
#!/bin/bash
while ! <<command>>
do
sleep 1
echo "Restarting program..."
done
替换<<command>>
为您要执行的命令。该过程必须以退出代码零结束,以打破循环。否则,它将通过脚本重新启动。
如果它死了,您是否只想重新启动它? 问题在于它不能处理冻结的情况。 因此,仅检查过程并不总是有帮助。因此,如果这类似于Web服务器,则需要一个脚本从用户的角度检查它。
如果设置了Nagios Monitoring,则可以使用事件处理程序。这些只是您编写的脚本,这些脚本将在服务关闭时运行。因此,如果网站关闭,您可能需要重新启动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