supervisord:如何在PROCESS_STATE_FATAL上停止supervisord

3
我正在使用supervisord来管理Docker容器中的多个进程。但是,其中一个进程始终是“主”进程,其他进程是监视和报告进程。我想做的是,如果主进程在startretries后启动失败,就杀死supervisord。
我尝试使用eventlistener来杀死该进程:
[eventlistener:master]
events=PROCESS_STATE_FAIL
command=supervisorctl stop all

但我认为事件子系统并不是如此复杂。我认为我需要编写一个事件监听器来处理事件。 这个正确吗?如果其中一个进程挂掉了,有没有更简单的方法来终止整个supervisord?

谢谢。

2个回答

1
另一个尝试:

[eventlistener:quit_on_failure]
events=PROCESS_STATE_FATAL
command=sh -c 'echo "READY"; while read -r line; do echo "$line"; supervisorctl shutdown; done'

特别是对于Docker容器,如果在出现错误时进行简单直接的关闭,这实际上会使其崩溃。当进程死亡时,容器应该关闭。

你可以使用bash和$PPID,这样就不需要使用supervisorctl了:/bin/bash -c“echo READY; while read line; do kill $PPID; sleep 300; kill -9 $PPID; done” - Evan Borgstrom

0

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