我使用了Daemontools来提供一种简单可靠的方式来监视我的服务器上的Unix服务。 它运作良好,但它需要不同的思维方式( DJB方式 ),一些常见的抱怨是:
我记得两年前有一些类似的“主pipe/监督”守护进程正在进行,但是有些还是有些粗糙。
如果你已经从Daemontools切换到其他的东西,你select了什么,并为你工作? RedHat或Ubuntu是否默认使用任何进程pipe理器实用程序?
Hrm,如果你使用的是Ubuntu,那么他们新的初始化过程,就是过程监督。 它可以用于你的标准启动和停止服务,一个sysV初始化脚本,它还可以监视正在运行的应用程序,并在死后重新生成。
你也可以通过inittab实现一个穷人的进程重启器,这取决于你的需求。
如果你主要是在寻找一些东西来关注一个过程,确保它始终在运行,然后在没有的时候重新启动它,那么我已经很幸运了。 不幸的是,我所知道的唯一来源是Debian软件包。 但是,这是一个非常小巧和简单的应用程序,基本上只有一个.c和.h文件,带有一个make文件。 在Red Hat上从Debian源代码tarball编译它是微不足道的(我甚至在我之前的工作中做过RPM)。
我听说过的最后一个select,但没有使用,是主pipe 。 它看起来是一个很有前景的工具,但是重新启动对于我来说已经足够好了,因为我需要的是,我还没有打扰过它。
为runit +1。 与daemontools相比,具有更多的function和灵活性,与现有的守护进程参数和选项兼容。 很整齐。
但是正如你所提到的,很多工具都带有自己的控制二进制文件,apache2ctl,ejabberdctl,poundctl,collectd等等。虽然存在黑客,但是有时候它更好地坚持所提供的工具,大多数时候你不确定最干净可能的实施。 我通常会做出妥协,并且大部分服务都在runit的监督下运行。 其他人可以允许使用微不足道的方式运行。
那么,有runit 。 我不能告诉你它与守护神工具有什么不同和相似之处,但从Berstein式的网站来看,我认为伯恩斯坦的影响是确定的。
作为已经提到的守护进程和守护进程的替代方法,有libslack包的守护进程命令。
daemon
是相当可configuration的,并关心所有繁琐的守护进程的东西,如自动重启,日志logging或pidfile处理。
Fedora似乎准备切换到systemd:http: //0pointer.de/blog/projects/systemd.html
另外还有libslack的守护进程工具,用C编写,可用于各种(Unix)平台。
它是相当可configuration的,并且关心所有繁琐的守护进程,比如自动重启,日志logging或pidfile处理。
有supervisord
Ubuntu自带的Upstart – 我不太了解,但是我知道它有“主pipe”function。 苹果的launchd是另一种select(维基百科的文章有一个很好的“另见”部分,也列出了其他一些,包括Upstart&RunIt)。
他们都有自己的优点和自己的特色品牌 – 每当有人问我“stream程主pipe”/“看门狗”计划时,我总是问同样的问题:为什么你需要一个?
没有stream行/社区共识的工具,因为每个走在这条路上的人都意识到自己的死路一条。 如果你的长时间运行的进程失败太频繁,简单的监控就足够好了,那就停止使用它们,并把代码放在一些事件驱动的东西里面。
编辑:正如Chris指出的那样,有时候你完全不知所措,在这种情况下,寻找进程/ pid文件的* / 1 cron作业,如果缺失则运行一个启动/重启动,并将结果通过电子邮件发送给负责人开发人员/产品经理是您的后备职位。