我正在寻找一种方法来监视进程,并在进程因某种原因终止时重新启动可执行文件。Linux 是否有可以执行此操作的内置工具?
答案1
如果它是由 init 启动的,您可以让 init 重新生成它。将进程的操作设置为您希望进程处于的运行级别“重新生成”。
答案2
就你的情况而言:
#!/bin/bash
while ! <<command>>
do
sleep 1
echo "Restarting program..."
done
替换<<command>>
为要执行的命令。进程必须以退出代码零结束才能中断循环。否则,脚本将重新启动它。
答案3
如果它死机了您是否只想重新启动它? 问题在于它无法处理冻结的情况。 因此,仅检查进程并不总是有帮助。因此,如果这是 Web 服务器之类的东西,您需要一个脚本从用户的角度对其进行检查。
如果你设置了 Nagios 监控,则可以使用事件处理器。这些只是您编写的脚本,将在服务关闭时运行,因此,如果网站关闭,您可以使用一个脚本重新启动 Apache 之类的程序。
答案4
取决于发行版,但我们已成功使用“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