我如何在 upstart、runit、supervisor、daemontools、... 之间进行选择,以便在进程终止时重新启动进程?(过程监督/监控)

Mat*_*sen 13 upstart daemontools supervisord runit

我有一个 Nginx 网络代理、gunicorn 网络服务器和一个 python/flask 网络应用程序。Gunicorn 进程显然已经死了,我想在未来通过研究一种实用程序来改善这一点,该实用程序可以在 gunicorn 进程再次崩溃时监控并重新启动它。

我发现了几个可以完成这项工作的流程监督实用程序:

  • 守护进程
  • 启动
  • 运行
  • s6
  • 导师
  • 系统D
  • 暴发户
  • ...

是否有一篇综合文章比较和对比了用于监视和重新启动进程的各种实用程序?

https://en.wikipedia.org/wiki/Process_supervision

sam*_*usz 2

如果您的发行版使用 Upstart,请使用它。它对作业重新启动有非常基本的支持,但包括可以防止重新启动循环的限制,如 @EEAA 所提到的。

如果您的操作系统使用其他 init 程序,请不要更改它。我无法真正帮助你使用你提到的其他工具,因为我通常使用 Ubuntu,其中 Upstart 仍然存在(截至最新的 LTS),所以我与它们关系不大。但创建一个简单的脚本并不是一项艰巨的任务,该脚本每分钟从cron运行一次(或更频繁地在循环中运行),它可以检查 PID 是否存在并在失败时重新启动。