在我的ubuntu服务器上,我使用
God监视一些Ruby进程/脚本,包括一个Queue系统.
上帝自动检查我的某个进程何时存在并重新启动它.它还会跟踪内存使用情况,并在触发特定条件时正常运行.
今天我重新启动了服务器,过了一会儿,我注意到我的队列无法运行.经过快速检查,我发现服务器重启后上帝没有重启(我认为应该).
确保上帝(或通用进程)在服务器重启时或因任何原因导致进程被终止时自动重启的最佳方法是什么?
我用来启动上帝的具体命令是
god -c config
解决方法
这里有几种选择.如果您想要一个推荐而不是阅读其他推荐,请跳到最后一段!
只需在重新启动时重新启动很简单:将其添加到/etc/rc.local,默认情况下,基于Debian的发行版(以及许多其他版本)在其他启动脚本中的所有内容之后运行.如果上帝不落入背景本身你可能需要和如此命令的命令:
god -c config &
但是当它被杀死时,上面的过程不会重启.你可以编写一个无限循环的脚本,但这很麻烦,当你真的希望它被杀死时会引起问题.
您还可以创建自己的初始化脚本,模仿/etc/init.d中的那些(并链接到/etc/rc.*’,这将为您提供更完整的解决方案,因为您可以在停止/启动服务时使用你需要,虽然如果你没有额外的脚本,这将不会自动为你启动服务.
您可以将它添加到/ etc / inittab,然后init将为您管理进程,在启动时启动它并在它死亡时重新启动它.如果它经常在很短的时间内消失,它甚至会停止重新启动它.但这仍然不完美.
我认为你所描述的通常推荐的方法是daemontools(http://en.wikipedia.org/wiki/Daemontools),它也支持重新启动服务,如果它死了.这比使用/ etc / initab中的条目要多一些工作,但最终会得到一个更干净的最终产品,它可以完成您在问题中提出的所有问题.应该在任何Linux发行版的存储库中找到daemontools.