我正在寻找可以从 CLI 控制的进程管理器(添加、启动、停止、删除),这样我就可以通过编程方式控制它。
我尝试过使用https://github.com/circus-tent/circus,但问题是当我从 CLI 添加它时,进程在服务器重新启动后消失。我在那里开了一个问题;https://github.com/circus-tent/circus/issues/937。我还没有尝试过 Supervisord,但似乎有同样的问题,https://github.com/mnaberez/supervisor_twiddler/issues/4。
是否有任何进程管理器可以从 CLI 添加守护进程,并且更改在重新启动后仍然存在,而无需触及配置文件?谢谢。
我在 Centos 7 上,我想为每个注册用户守护一个 PHP CLI 脚本。
抱歉,我不知道如何更好地解释这一点。我有一个具有无限循环的 PHP CLI 脚本。该脚本正在运行以侦听新传入的消息。该脚本应在新注册用户(例如 )上启动php listen.php --user_id=111
,并在删除用户时停止。
答案1
我为此推荐的软件包daemontools
由 Dan Bernstein 调用。
这是提供系统范围服务监督和管理服务的工具集合。它不仅关心服务的启动和停止,还监控服务守护进程的运行。除此之外,它提供了一个可靠的接口来向服务守护进程发送信号,而无需 pid 文件,以及具有自动日志文件轮换和磁盘空间限制的日志设施。
它满足您的所有要求。它非常可靠,一旦您设置并了解如何使用它,就几乎不需要维护。如果你的系统有问题,那不是daemontools的问题。
- 所有控制均通过命令行进行。
- 系统重新启动时,守护进程将重新启动。
- 可以从 CLI 停止、启动、停止、挂起守护程序。
- 另外,还处理每个守护进程的日志记录。
- 它管理快速重新启动(当程序快速终止时)。
这个封装和底层设计坚如磐石。源代码多年来没有改变,但不要被它欺骗了。它不需要改变,因为它是正确的。
我个人曾使用此软件包一次可靠地控制一台计算机上的数百个守护进程。
配置新客户端很简单,只需将控制文件放在指定目录中,它就会自动启动并永远重新启动,除非您干预。一旦您知道文件应该是什么样子,您就可以创建一个模板或一种参数化控制文件创建的方法。
我认为你最好的选择是从 github 上的 kteru 获取 RPM 源代码包并从中构建你自己的 RPM。它很容易构建,但 RPM 将使管理和复制系统变得更加容易。
主页和文档位于http://cr.yp.to/daemontools.html
CentOS 4-7 RPM源码包可在github上获取: https://github.com/kteru/daemontools-rpm
还有一个名为的软件包runit
,我认为它是一个分支,daemontools
没有一些许可和分发限制,daemontools
并且具有更灵活的目录布局策略。它在 Debian 存储库中,我不知道 CentOS 是否如此。