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 支持的自动重启特性及配置文件变化的处理方式[1][2][3][7][8][9].

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

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

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

Sources

1\] Supervisor (进程管理利器) 使用说明- 运维笔记 - 博客园 [www.cnblogs.com/kevingrace/...](https://link.juejin.cn?target=https%3A%2F%2Fwww.cnblogs.com%2Fkevingrace%2Fp%2F7525200.html "https://www.cnblogs.com/kevingrace/p/7525200.html") \[2\] supervisor简介 - CRMEB [www.crmeb.com/ask/thread/...](https://link.juejin.cn?target=https%3A%2F%2Fwww.crmeb.com%2Fask%2Fthread%2F30818 "https://www.crmeb.com/ask/thread/30818") \[3\] Supervisor 进程管理- 紫青宝剑 - 博客园 [www.cnblogs.com/Blogwj123/p...](https://link.juejin.cn?target=https%3A%2F%2Fwww.cnblogs.com%2FBlogwj123%2Fp%2F17729049.html "https://www.cnblogs.com/Blogwj123/p/17729049.html") \[4\] Mac环境下使用supervisor-腾讯云开发者社区 [cloud.tencent.com/developer/a...](https://link.juejin.cn?target=https%3A%2F%2Fcloud.tencent.com%2Fdeveloper%2Farticle%2F2180839 "https://cloud.tencent.com/developer/article/2180839") \[5\] supervisor - 学海无涯,回头是岸\|施主 [gschaos.club/735.html](https://link.juejin.cn?target=https%3A%2F%2Fgschaos.club%2F735.html "https://gschaos.club/735.html") \[6\] supervisor原理及如何使用- ExplorerMan - 博客园 [www.cnblogs.com/ExMan/p/125...](https://link.juejin.cn?target=https%3A%2F%2Fwww.cnblogs.com%2FExMan%2Fp%2F12570394.html "https://www.cnblogs.com/ExMan/p/12570394.html") \[7\] Supervisor多进程管理异常自动重启可视化管理 - 腾讯云 [cloud.tencent.com/developer/a...](https://link.juejin.cn?target=https%3A%2F%2Fcloud.tencent.com%2Fdeveloper%2Farticle%2F1940533 "https://cloud.tencent.com/developer/article/1940533") \[8\] linux 进程管理工具supervisor使用原创 - CSDN博客 [blog.csdn.net/qq_37674086...](https://link.juejin.cn?target=https%3A%2F%2Fblog.csdn.net%2Fqq_37674086%2Farticle%2Fdetails%2F122713725 "https://blog.csdn.net/qq_37674086/article/details/122713725") \[9\] 进程管理器(四) Go supervisord - Rectcircle Blog [www.rectcircle.cn/posts/proce...](https://link.juejin.cn?target=https%3A%2F%2Fwww.rectcircle.cn%2Fposts%2Fprocess-manager-04-go-supervisord%2F "https://www.rectcircle.cn/posts/process-manager-04-go-supervisord/") \[10\] 详解Supervisor进程守护监控转载 - CSDN博客 [blog.csdn.net/u011132987/...](https://link.juejin.cn?target=https%3A%2F%2Fblog.csdn.net%2Fu011132987%2Farticle%2Fdetails%2F103716093 "https://blog.csdn.net/u011132987/article/details/103716093")

相关推荐
舒一笑1 小时前
为什么where=Version就是乐观锁了?
后端·mysql·程序员
GoGeekBaird1 小时前
关于垂类AI应用落地行业的方法论思考
后端·github·agent
小宁爱Python1 小时前
Django 基础入门:命令、结构与核心配置全解析
后端·python·django
你的人类朋友2 小时前
认识一下Bcrypt哈希算法
后端·安全·程序员
tangweiguo030519872 小时前
基于 Django 与 Bootstrap 构建的现代化设备管理平台
后端·django·bootstrap
IT果果日记2 小时前
详解DataX开发达梦数据库插件
大数据·数据库·后端
dazhong20122 小时前
Spring Boot 项目新增 Module 完整指南
java·spring boot·后端
bobz9652 小时前
Cilium + Kubevirt 与 Kube-OVN + Kubevirt 在公有云场景下的对比与选择
后端
David爱编程4 小时前
深度解析:synchronized 性能演进史,从 JDK1.6 到 JDK17
java·后端
脑子慢且灵4 小时前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee