Supervisord 自动重启子进程

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

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

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

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

总结:

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

相关配置示例:

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/...

相关推荐
evans在进步5 小时前
Spring Boot 工程化核心详解:Parent、Starter、热部署、事务与多数据源
spring boot·后端·python
宫水三叶的刷题日记6 小时前
馋猫外卖:AI 让字节式试错没有天花板
后端
SomeB1oody6 小时前
【RustyML入门】7.4. 按需裁剪与模块化集成
开发语言·后端·机器学习·rust·教程
罗超驿6 小时前
SpringBoot 快速入门
java·spring boot·后端
卷无止境7 小时前
除了开发api,FastAPI其实也可以配合jinja2模板写页面
后端·python·fastapi
newerp7 小时前
Redis 操作与缓存策略
后端·程序员·go
newerp7 小时前
GORM ORM 基础
后端·程序员·go
小岛前端7 小时前
AI Skills 已经封神,但新的问题却越来越严重!
前端·后端·github
拖孩7 小时前
一个人 + AI 做的小程序,上线 15 天赚了 10 块 5
前端·后端·微信小程序
newerp7 小时前
CRUD 操作与预处理语句
后端·程序员·go