You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Supervisord:子进程故障不重启且主进程随子进程终止?

配置Supervisord实现子进程失败不重启且主进程随子进程停止而退出

嘿,这个需求其实可以通过Supervisord的核心配置参数加上简单的事件监听器来实现,我来给你一步步拆解:

1. 配置子进程失败不自动重启

在每个被托管的子进程配置块([program:xxx])中,添加以下两个关键参数:

[program:your-process-name]
command=/path/to/your/executable
# 核心配置:无论进程正常退出还是异常崩溃,都不重启
autorestart=false
# 启动失败后直接放弃,不重复重试(可选但更严谨)
startretries=0
  • autorestart=false:这个参数明确告诉Supervisord,不管子进程以什么状态退出,都不要尝试自动重启它。
  • startretries=0:如果子进程第一次启动就失败(比如执行文件不存在、权限不足),Supervisord不会反复重试启动,直接终止该进程的托管。

2. 配置主进程随任一子进程停止/崩溃而退出

Supervisord本身没有直接的配置项实现这个逻辑,但可以通过事件监听器来监听子进程的状态变化,一旦检测到子进程停止或崩溃,就触发主进程关闭。

步骤2.1:创建事件监听器脚本

写一个简单的Python脚本(也可以用Shell脚本),用来监听子进程的停止/崩溃事件,然后执行关闭命令。比如创建shutdown_on_process_exit.py:

#!/usr/bin/env python
import sys
import os

def listen_for_events():
    while True:
        # 读取Supervisord发送的事件头
        header_line = sys.stdin.readline()
        if not header_line:
            break  # 输入流关闭,退出循环
        
        # 解析事件头的键值对信息
        headers = dict(item.split(':') for item in header_line.strip().split())
        # 根据头信息读取事件体内容
        event_body = sys.stdin.read(int(headers['len']))
        
        # 监听目标事件:子进程正常停止、子进程崩溃
        if headers['eventname'] in ('PROCESS_STATE_STOPPED', 'PROCESS_STATE_FATAL'):
            # 触发Supervisord主进程关闭
            os.system('supervisorctl shutdown')
            break

if __name__ == '__main__':
    listen_for_events()

给脚本添加执行权限:

chmod +x /path/to/shutdown_on_process_exit.py

步骤2.2:在Supervisord中配置事件监听器

在你的Supervisord主配置文件(通常是/etc/supervisord.conf或/etc/supervisor/supervisord.conf)中,添加监听器的配置块:

[eventlistener:shutdown-trigger]
# 指定刚才创建的脚本路径
command=/path/to/shutdown_on_process_exit.py
# 监听的事件类型:子进程停止、子进程崩溃
events=PROCESS_STATE_STOPPED,PROCESS_STATE_FATAL
# 监听器本身退出后不重启
autorestart=false

3. 验证配置

重启Supervisord使配置生效:

supervisorctl reload

现在可以做两个测试:

  • 手动停止某个子进程:supervisorctl stop your-process-name,此时Supervisord主进程会随之退出。
  • 让某个子进程崩溃(比如用kill命令杀死进程),Supervisord会检测到事件并自动退出。

这样就完全满足你的需求啦!

内容的提问来源于stack exchange,提问作者rokpoto.com

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:05:46