11

我正在使用 supervisord 来管理一堆进程。是否可以使用 supervisorctl 向这些进程发送任意信号而不实际停止它们并设置停止信号?

4

3 回答 3

15

在 3.2.0(2015 年 11 月发布)supervisorctl之前,不支持向其管理的进程发送任意信号。

从 3.2.0 开始,使用supervisorctl signal

signal <signal name> <name>     Signal a process
signal <signal name> <gname>:*      Signal all processes in a group
signal <signal name> <name> <name>  Signal multiple processes or groups
signal <signal name> all        Signal all processes

所以

supervisorctl signal HUP all

将发送SIGHUP到主管管理的所有进程。

在 3.2.0 之前,您可以改为使用supervisorctl status列出pid托管进程的 s。然后用于kill向那些pids 发送信号。使用一点sed魔法,您甚至可以提取这些pids 以作为kill命令的输入:

kill -HUP `bin/supervisorctl status | sed -n '/RUNNING/s/.*pid \([[:digit:]]\+\).*/\1/p'`

还将发送到受控制SIGHUP的所有活动进程。supervisord

于 2012-11-30T12:29:16.493 回答
7

从 3.2.0 开始,您现在可以向进程发送任意信号!

$ supervisord --version
3.2.0


$ supervisorctl signal help
Error: signal requires a signal name and a process name
signal <signal name> <name>     Signal a process
signal <signal name> <gname>:*      Signal all processes in a group
signal <signal name> <name> <name>  Signal multiple processes or groups
signal <signal name> all        Signal all processes


$ supervisorctl signal HUP gateway
gateway: signalled
于 2016-01-28T21:49:09.723 回答
0

有一个名为mr.laforge主管的第三方插件

让您轻松确保 supervisord 和由它控制的特定进程在 shell 和 Python 脚本中运行。还向主管添加了一个 kill 命令,可以向子进程发送任意信号。

于 2014-05-13T07:21:41.517 回答