我有一个golang程序,我想在Debian Squeeze框中终止后重启。 在Apache 2的mod_proxy安装程序后面提供HTTP服务。 我不希望这个过程失败,但我想有一些保险。
在Ubuntu上,我会用暴发户来保持这个进程的活跃。 Debian不喜欢我所了解的Upstart,因为它是init的替代品。
是否有一个替代scheme重新启动一个或多个进程后终止在Squeeze上工作,并与初始化打好?
最好的办法是daemontools 。 他们允许你监视和重新生成进程。
请参阅其网站上的文档: http : //cr.yp.to/daemontools.html
监督是一个轻量级,高效率的select。 在Debian下,它被包装在守护进程中 。 你也可以阅读这个相关的问题 ,其中列出了一些监督批评,提到重新提到另一种可能性。
最后,如果你想要一个非常容易设置的东西,我已经获得了monit的巨大成功。 它也被包装在Debian中 。
监督或监督是有利于保持一个进程活着。 既然你要求保持“一个或多个”进程的活着,我想塞住supervisord 。 pipe理一个进程肯定是过度的,但如果你需要跟踪多个进程,那么这可能是你的事情。
一个select是使用/etc/inittab而不是将脚本放在/etc/init.d/ 。
您只需添加以下格式的条目:
<jobname>:<runlevels>:respawn:<command>
不幸的是,这意味着你不能使用正常的启动/停止/重新启动init命令,但它应该确保你的脚本一直在运行。
处理过程重新开始的交叉分配方式是用cron和一个简单的脚本。 你可以在这里看到一个写作如何保持在Linux中运行的工作
脚本看起来像
#!/bin/bash # make-run.sh # make sure a process is always running. # Add the following to the crontab (ie 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