重新加载supervisord会导致其下的进程停止吗?

20

我尝试弄清楚何时使用 reload 命令来操作 supervisord。它会停止当前正在执行的处理吗? 我使用以下步骤:

mlzboy@mlzboy-mac:~/my/ide/test$ pstree -p|grep super
        |-supervisord(6763)
mlzboy@mlzboy-mac:~/my/ide/test$ supervisorctl 
daemon                           STARTING   
supervisor> reload
Really restart the remote supervisord process y/N? y
Restarted supervisord
supervisor> exit
mlzboy@mlzboy-mac:~/my/ide/test$ pstree -p|grep super
        |-supervisord(6763)
我发现进程ID没有改变。那么这是否证明在supervisor控制下重新加载不会停止处理过程呢?

1
我自己解决了,它会杀死所有子进程,而且我犯了一个错误,在nginx和supervisor中的reload动词不同,nginx中它表示重新加载配置,在supervisor中它表示重启,相应的动词是update。但为什么pid没有改变,我还是很困惑,有人能解释一下吗? - mlzboy
1个回答

50

它不会杀死 supervisord 进程,只是停止所有进程、重新加载配置文件并重新启动进程。

如果你只想应用新的配置,请使用 reread 命令。这将重新加载配置而无需停止和重启进程。

运行 update 将会重新启动已更改的进程(组)。


似乎XML-RPC没有提供远程控制的重新读取或更新API,参见http://supervisord.org/api.html?highlight=rpc#supervisor.xmlrpc。有没有其他方法可以进行远程控制,而不是通过supervisorctl? - mlzboy
抱歉我的粗心,我找到了,但是我遇到了另一个问题,如何知道当前的监管者使用哪个配置文件,因为我有很多测试、开发等不同的配置文件,我无法区分它们,除非知道当前使用的配置文件位置,然后我才能检查它。 - mlzboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接