我正在研究有助于保持进程正常运行(在发生崩溃时自动重启)的不同服务。你更喜欢哪些,你有什么推荐/建议?以下是我找到的一些方法:
- 在 /etc/inittab 中重生
- 使用 daemontools 进行监督
- 运行
- 暴发户
- 监控
就个人而言,我对 monit 无法正确重生进程有过不好的体验,所以我不得不反对它。我目前正在使用 daemontools,到目前为止它运行良好。
我正在研究有助于保持进程正常运行(在发生崩溃时自动重启)的不同服务。你更喜欢哪些,你有什么推荐/建议?以下是我找到的一些方法:
就个人而言,我对 monit 无法正确重生进程有过不好的体验,所以我不得不反对它。我目前正在使用 daemontools,到目前为止它运行良好。
daemontools确实得到了很好的证明;许可证甚至不再有问题,我不认为。
它的常见问题解答将其与您询问的 inittab 进行了比较。
如果你想要简单,我会选择runit。它将每秒重新启动一次服务,直到它始终启动,可以用一点点方便的工作替换 /etc/init.d 中的脚本,并且始终保持一致的处理。
我唯一的缺点是找出单次永远在线的服务(“启动”但实际上退出的服务同时留下他们正在“运行”的标志,即
/etc/init.d/networking
真的不是服务,而是像一个服务) , 有一些手牵手来获得这种行为。大多数人引入了一个辅助工具来暂停运行脚本的终止,或者用 等无限循环它sleep
,这样它就不会退出脚本。当您发出sv stop <service>
它时,会终止 shell,一切都会“正常”进行。launchd解决了这个问题等等。根据维基百科文章:
它在 mac 世界中非常多产,但它是开源的,你没有理由不能在 linux 中使用它。Ubuntu 考虑使用它,但当时许可证不兼容(后来它已更改为 Apache 许可证)。
Quagga 路由套件有 watchquagga,它是针对该套件的需求量身定制的。不确定它是否可以与任何通用守护程序一起使用。