我正在使用supervisord来管理一堆进程。是否可以使用supervisorctl向这些进程发送任意信号而不实际停止它们并设置stopignal?
答案 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
。然后使用kill
向pid
个发送信号。使用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命令,可以向子进程发送任意信号。