替代 Daemontools (djbtools) 来监督 unix 进程?

Ste*_*ski 26 unix daemontools

我使用Daemontools提供了一种简单可靠的方法来监督我服务器上的 Unix 服务。它运作良好,但它需要不同的思维方式(DJB 方式),一些常见的抱怨是:

  • 基于TAI64N的时间戳
  • 不在 /etc/init.d(或 (/usr/local)/etc/rc.d)下存储脚本
  • 并不总是适用于像 apachectl 这样的脚本。有些脚本需要重写。

我记得大约两年前,一些类似的“主管/看门狗”守护进程正在开发中,但有些仍然有点粗糙。

如果你已经从 Daemontools 切换到其他东西,你选择了什么并且它对你来说效果很好?默认情况下,RedHat 或 Ubuntu 是否带有任何进程管理器实用程序?

Chr*_*ell 16

Hrm,如果您使用的是 Ubuntu,那么他们的新 init 进程upstart包括一定级别的进程监督。它可以用于标准的服务启动和停止,就像 SysV init 脚本一样,它还可以监视正在运行的应用程序并在它们死掉时重新生成它们。

您还可以根据您的需要,通过 inittab 实现一个穷人的进程重启程序。

如果您主要是在寻找一些东西来监视进程,以确保它始终在运行,然后在它不运行时重新启动它,那么我很幸运地使用了restartd。不幸的是,我所知道的唯一来源是 Debian 软件包。然而,它是一个非常小而简单的应用程序,基本上只是一个单独的 .c 和 .h 文件,带有一个 make 文件。从 Red Hat 上的 Debian 源 tarball 编译它是微不足道的(我什至在我以前的工作中制作了它的 RPM)。

我听说过但没有使用过的最后一个选项是Supervisor。它看起来是一个很有前途的工具,但在过去,重新启动对我来说已经足够好了,对于我需要的东西,我还没有费心去玩它。


Moh*_*wla 14

+1 为 runit。比 daemontools 具有更多功能和灵活性,与现有的 daemontools 参数和选项兼容。漂亮整齐。

但是正如你提到的,很多工具都带有自己的控制二进制文件,apache2ctl、ejabberdctl、poundctl、collectd 等。虽然存在黑客攻击,但有时坚持使用提供的工具会更好,主要是在你不确定最干净的时候可能的实施。我通常会做出妥协,让大部分服务在 runit 的监督下运行。可以允许其他人使用平凡的方式运行。


Ste*_*day 6

嗯,有runit。我不能告诉你它与 daemontools 的区别和相似之处是什么,但从 Berstein-esque 网站来看,我会说有一个明确的 Bernstein 影响。

  • 我的投票是给 runit 的,因为您可以将它放入 SysVInit 安排中并让它相当透明地接管 /etc/init.d/<scriptname>。 (2认同)