当特定程序正常停止时如何停止监督

时间:2019-09-27 09:42:59

标签: docker supervisord

我在docker内部使用supervisord来运行两个进程:

  1. 主要过程和
  2. 主要流程所需的ssh隧道

当主进程正常停止时,ssh隧道进程将永远保持活动状态,从而防止docker停止。这是有问题的,因为容器作为Kubernetes作业运行,需要在主进程完成时终止。

问题是,是否可以在主进程停止时杀死ssh隧道,甚至更好:在主进程停止时停止监督者?

1 个答案:

答案 0 :(得分:0)

使用event listner

[eventlistener:MyMainProcessName]
command=kill -3 $(cat "/var/run/supervisord.pid")
process_name=MyMainProcessName
events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL

如果该进程停止,它将发送SIGQUIT到Supervisor