问题描述
我在docker内部使用 supervisord 来运行两个进程:
I am using supervisord inside docker to run two processes:
- 主要过程和
- 主要流程所需的ssh隧道
当主进程正常停止时,ssh隧道进程将永远保持活动状态,从而防止docker停止.这是有问题的,因为容器是作为Kubernetes作业运行的,需要在主进程完成时终止.
When the main process stops normally, the ssh tunnel process stays alive forever, preventing the docker from stopping. This is problematic as the container runs as a Kubernetes job, that needs to terminate when the main process finished.
问题是,是否可以在主进程停止时杀死ssh隧道,甚至更好:在主进程停止时停止受监管的ssh隧道?
The question is, is it possible to kill the ssh tunnel when the main process stops or even better: stopping supervisord when the main process stopped?
推荐答案
使用事件列表器
:
[eventlistener:MyMainProcessName]
command=kill -3 $(cat "/var/run/supervisord.pid")
process_name=MyMainProcessName
events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL
如果该进程停止,它将向管理员发送 SIGQUIT
that will send SIGQUIT
to Supervisor if that process stopped
这篇关于当特定程序正常停止时如何停止监督的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!