![如何在进程终止后自动重新启动它?](https://linux22.com/image/557759/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%BF%9B%E7%A8%8B%E7%BB%88%E6%AD%A2%E5%90%8E%E8%87%AA%E5%8A%A8%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E5%AE%83%EF%BC%9F.png)
我有一个 golang 程序,我想在它在 Debian Squeeze 机器上终止后重新启动它。该程序在 Apache 2 mod_proxy 设置后面提供 HTTP 服务。我不希望该过程失败,但我想对此采取一些保险措施。
在 Ubuntu 上,我会使用 upstart 来保持进程处于活动状态。据我所知,Debian 不喜欢 Upstart,因为它是 init 的替代品。
有没有其他方法可以在 Squeeze 上运行并与 init 很好地配合,在终止后重新启动一个或多个进程?
答案1
最好的方法是daemontools
。它们允许您监视和重生进程。
请参阅其网站上的文档:http://cr.yp.to/daemontools.html
答案2
答案3
supervise 或 monit 非常适合保持单个进程处于活动状态。既然你要求保持“一个或多个”进程处于活动状态,我想插入主管。对于管理单个进程来说,这当然是小菜一碟,但如果您需要跟踪多个进程,它可能就适合您。
答案4
处理进程重新启动的跨分布方法是使用 cron 和一个简单的脚本。你可以在这里看到一个说明如何在 Linux 中保持作业运行
脚本看起来像
#!/bin/bash
# make-run.sh
# make sure a process is always running.
# Add the following to the crontab (i.e. crontab -e)
# */5 * * * * /home/path_to_make_run/make-run.sh
process=servermonitoringhq
makerun="/home/path_to_the_job_you_want_running/runjob.sh"
if pgrep $process > /dev/null
then
exit
else
$makerun &
fi