如何在进程终止后自动重新启动它?

如何在进程终止后自动重新启动它?

我有一个 golang 程序,我想在它在 Debian Squeeze 机器上终止后重新启动它。该程序在 Apache 2 mod_proxy 设置后面提供 HTTP 服务。我不希望该过程失败,但我想对此采取一些保险措施。

在 Ubuntu 上,我会使用 upstart 来保持进程处于活动状态。据我所知,Debian 不喜欢 Upstart,因为它是 init 的替代品。

有没有其他方法可以在 Squeeze 上运行并与 init 很好地配合,在终止后重新启动一个或多个进程?

答案1

最好的方法是daemontools。它们允许您监视和重生进程。

请参阅其网站上的文档:http://cr.yp.to/daemontools.html

答案2

监督是一个轻量级、高效的替代方案。在 Debian 下,它打包在守护进程工具。您还可以阅读此内容相关问题,其中列出了一些监督批评,并提到重新启动作为另一种可能性。

最后,如果你想要一些非常简单的设置,我已经成功地监控。 也是打包在 Debian 中

答案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 

相关内容