【问题标题】:How to stop supervisord when a specific program stopped normally当特定程序正常停止时如何停止supervisord
【发布时间】:2019-09-27 09:42:59
【问题描述】:

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

  1. 主进程和
  2. 主进程需要的 ssh 隧道

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

问题是,是否有可能在主进程停止时终止 ssh 隧道,甚至更好:在主进程停止时停止 supervisord?

【问题讨论】:

    标签: docker supervisord


    【解决方案1】:

    使用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

    【讨论】:

    • 确定这就是它的工作方式吗?似乎该命令在 supervisord 启动时立即执行,无论是否收到信号。
    • 是的,我也测试过
    猜你喜欢
    • 2012-02-23
    • 2015-09-25
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多