我正在使用 supervisord 来管理一堆进程。是否可以使用 supervisorctl 向这些进程发送任意信号而不实际停止它们并设置停止信号?
最佳答案
直到 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
向那些人发送信号 pid
s。带一点sed
魔法,你甚至可以提取那些pid
s 可接受作为 kill
的输入命令:kill -HUP `bin/supervisorctl status | sed -n '/RUNNING/s/.*pid \([[:digit:]]\+\).*/\1/p'`
还会发
SIGHUP
到 supervisord
下的所有事件进程控制。
关于supervisord - 向supervisord的子进程发送一般信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632399/