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

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

我正在寻找一种方法来监视进程,并在进程因某种原因终止时重新启动可执行文件。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

相关内容