我正在使用 supervisord 来管理一堆进程。是否可以使用 supervisorctl 向这些进程发送任意信号而不实际停止它们并设置停止信号?
问问题
7525 次
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
向那些pid
s 发送信号。使用一点sed
魔法,您甚至可以提取这些pid
s 以作为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 回答