Supervisorctl stop all = 停止进程?

Lee*_*son 4 process php-cli daemon

我正在运行几个 PHP CLI 脚本并通过 Supervisor 监控它们。

当我supervisorctl用来监视它们时,脚本显示如下:

cleanup     RUNNING    pid 1805, uptime 0:00:41
postsales   RUNNING    pid 1825, uptime 0:00:10
rebills     RUNNING    pid 1823, uptime 0:00:19
subscribers RUNNING    pid 1827, uptime 0:00:10
Run Code Online (Sandbox Code Playgroud)

但是,当我发出 a 时stop all, supervisorctl 冻结,我需要按 CTRL+C 退出。

当我下次运行时supervisorctl,状态如下所示:

cleanup     RUNNING    pid 1935, uptime 0:00:44
postsales   RUNNING    pid 1953, uptime 0:00:05
rebills     STOPPED    Jul 19 12:23 PM
subscribers RUNNING    pid 1951, uptime 0:00:05
Run Code Online (Sandbox Code Playgroud)

即只有一个进程已停止,其他进程继续运行。

如果我发出更多stop all命令,同样的事情会发生 - 一个脚本尝试退出,其余的挂起。

我已经尝试修改 supervisord.conf 文件以STOPSIGNAL=KILL防止 PHP 脚本没有正确处理默认的 TERM 信号,但同样的事情发生了。

有什么方法可以可靠地将 supervisorctl 与我的脚本一起使用以随意正确启动和停止它们吗?

yba*_*art 5

我在使用 CentOS 6 和 supervisor 2 时遇到了同样的问题。我假设你运行类似的配置。

就我而言,升级解决了问题。但是,我的系统没有可用的最新 supervisord 二进制包。所以这是我的更新方式:

首先,下载以下源 RPM supervisor-3.0-0.5.a10.fc16.src.rpm(可在此处获得:http : //dl.fedoraproject.org/pub/fedora/linux/releases/16/Everything/source/SRPMS/supervisor-3.0-0.5.a10.fc16.src.rpm)。如果您尝试使用更新的源包,构建可能会失败并且您可能会遇到依赖关系地狱。

安装rpm-build包使用:

yum install rpm-build
Run Code Online (Sandbox Code Playgroud)

然后尝试使用以下命令构建,

rpmbuild --rebuild supervisor-3.0-0.5.a10.fc16.src.rpm
Run Code Online (Sandbox Code Playgroud)

如果失败,请使用 yum 安装任何需要的依赖项。

yum install <dependencies>
Run Code Online (Sandbox Code Playgroud)

然后尝试再次构建:

rpmbuild --rebuild supervisor-3.0-0.5.a10.fc16.src.rpm
Run Code Online (Sandbox Code Playgroud)

然后你就可以安装 supervisord 了,问题就会消失!

yum install ~/rpmbuild/RPMS/noarch/supervisor-3.0-0.5.a10.el6.noarch.rpm
Run Code Online (Sandbox Code Playgroud)