向监督的子过程发送一般信号

时间:2012-11-29 18:35:08

标签: supervisord

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

3 个答案:

答案 0 :(得分:13)

直到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。然后使用killpid个发送信号。使用sed魔法,您甚至可以提取pid作为kill命令的输入:

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

还会将SIGHUP发送到supervisord控件下的所有活动进程。

答案 1 :(得分:7)

http://getwt.io,您现在可以向进程发送任意信号!

$ 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

答案 2 :(得分:0)

third-party plugin for supervisor名为mr.laforge

  

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