Sim*_*tti 5 linux ubuntu daemon process
在我的 Ubuntu 服务器上,我使用God来监控一些 Ruby 进程/脚本,包括一个队列系统。
上帝会自动检查我的进程之一何时存在并重新启动它。它还跟踪内存使用情况,并在触发特定条件时正确操作。今天我重新启动了服务器,过了一会儿我发现我的队列不起作用。快速检查后,我发现服务器重启后上帝没有重启(我认为应该)。
确保上帝(或通用进程)在服务器重新启动时或进程因任何原因被终止时自动重新启动的最佳方法是什么?
我用来启动 God 的具体命令是
god -c config
Run Code Online (Sandbox Code Playgroud)
这里有几个选项。如果您想要一个推荐而不是阅读其他推荐,只需跳到最后一段!
只需在重新启动时重新启动就很容易:/etc/rc.local默认情况下,将它添加到基于 Debian 的发行版(以及许多其他发行版)在其他启动脚本中的所有内容之后运行。如果god没有进入后台本身,您可能需要像这样添加 & 到命令的 ned :
god -c config &
Run Code Online (Sandbox Code Playgroud)
但是,当它被杀死时,上面不会重新启动进程。您可以编写一个无限循环的脚本,但这很混乱,当您真的想要杀死它时会导致问题。
您还可以创建自己的 init 脚本,以/etc/init.d( 并链接到/etc/rc.*' 中的脚本为蓝本,这将为您提供更完整的解决方案,因为您可以在需要时停止/启动服务,尽管这不会自动启动服务为您而无需一些额外的脚本。
您可以将它添加到您的/etc/inittab,然后init将为您管理该过程,在启动时启动它并在它死亡时重新启动它。如果它在很短的时间内经常死掉,它甚至会停止重新启动它。尽管如此,这仍然不完美。
我认为您所描述的通常推荐的方法是daemontools(http://en.wikipedia.org/wiki/Daemontools),它也支持在服务终止时重新启动服务。这在这里比使用条目要多一些工作,/etc/initab但您最终会得到一个更清洁的最终产品,它应该可以完成您在问题中提出的所有问题。daemontools几乎可以在任何 Linux 发行版的存储库中找到。