Supervisord 自动重启子进程

supervisord 本身能自动重启子进程(当子进程崩溃或退出时),这是通过配置文件中的参数如 autostart=true 和 autorestart=true 实现的,表示 supervisord 启动时自动启动子进程以及当子进程退出时自动重启。

但是,supervisord 不能直接监听其自身配置文件的变化来自动重启子进程。如果修改了 supervisord 的配置文件,需要手动执行命令使新的配置生效,同时触发子进程重启:

  • supervisorctl reload:重新加载配置文件,会重启所有管理的子进程(不管配置文件是否变动)。
  • supervisorctl update:只重启配置文件发生变动的子进程(包括新增的服务)。

要实现"监听配置文件变化自动重启子进程"的功能,通常会借助外部文件监控工具(例如 inotifywait)监听配置文件变动,然后自动调用 supervisorctl reload 或 supervisorctl update 来实现。

总结:

  • supervisord 自动重启子进程是支持的(基于进程退出状态)。
  • 监听 supervisord 配置文件变化自动重启子进程,需要额外脚本或工具辅助。
  • 修改配置后,需运行 supervisorctl reload 或 update 使配置生效并重启相关子进程。

相关配置示例:

ini 复制代码
[program:your_program]
command=your_command
autostart=true
autorestart=true

常用命令示例:

  • 重新加载所有配置,重启所有子进程:supervisorctl reload
  • 只重启配置发生变化的子进程:supervisorctl update

这就是 supervisord 支持的自动重启特性及配置文件变化的处理方式123789.

supervisorctl reload 不是异步的操作。它会停止 supervisord 主进程所管理的所有子进程,然后重启 supervisord 主进程,之后再根据新的配置启动所有子进程。这个过程是一个同步的重启操作,不同于 nginx 之类的平滑重载,reload 过程中 supervisord 会完全停止旧进程再启动新进程,因此不是异步进行的。

简而言之,supervisorctl reload 是同步重启 supervisord 及所有管理的子进程的命令,会造成短暂的服务中断24.

如果你只想重启一个子进程,最好的操作命令是:supervisorctl restart xxx

Sources

1 Supervisor (进程管理利器) 使用说明- 运维笔记 - 博客园 www.cnblogs.com/kevingrace/... 2 supervisor简介 - CRMEB www.crmeb.com/ask/thread/... 3 Supervisor 进程管理- 紫青宝剑 - 博客园 www.cnblogs.com/Blogwj123/p... 4 Mac环境下使用supervisor-腾讯云开发者社区 cloud.tencent.com/developer/a... 5 supervisor - 学海无涯,回头是岸|施主 gschaos.club/735.html 6 supervisor原理及如何使用- ExplorerMan - 博客园 www.cnblogs.com/ExMan/p/125... 7 Supervisor多进程管理异常自动重启可视化管理 - 腾讯云 cloud.tencent.com/developer/a... 8 linux 进程管理工具supervisor使用原创 - CSDN博客 blog.csdn.net/qq_37674086... 9 进程管理器(四) Go supervisord - Rectcircle Blog www.rectcircle.cn/posts/proce... 10 详解Supervisor进程守护监控转载 - CSDN博客 blog.csdn.net/u011132987/...

相关推荐
打工仔折腾 AI17 分钟前
从零写一个CAD 05:以鼠标为中心的滚轮缩放矩阵顺序不能反
后端·python·线性代数·性能优化·矩阵·计算机外设·ai agent 实战
谢亮_vipxieliang30 分钟前
Go基础数据类型全解
开发语言·后端·golang
专业程序开发源35 分钟前
springboot古城景区管理系统88564-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
小蒜学长1 小时前
基于微信小程序的遇见咖啡店点餐系统设计与实现(代码+数据库+LW)
java·spring boot·后端·微信小程序·咖啡店点餐系统
小蒜学长1 小时前
基于SSM+VUE的电影售票平台的设计与实现(代码+数据库+LW)
java·vue.js·spring boot·后端·ssm框架·电影售票平台
code2cat1 小时前
【随笔】MCP工具错误怎样分层:先读反馈,再决定下一步
开发语言·后端·ai agent·mcp
专业程序开发源2 小时前
springboot酒店会员点餐系统22339-计算机课程设计、毕业设计
java·javascript·vue.js·spring boot·后端·php·课程设计
AINative软件工程2 小时前
LLM 上下文满了别直接报错:Context Eviction 工程实践,5 种淘汰策略的生产对比
后端·llm·ai编程
FYKJ_20102 小时前
springboot游泳馆管理系统79222-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
ドロロ8062 小时前
openAPI与Restful API的区别
后端·restful