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")

相关推荐
沐泽__8 小时前
Flask简介
后端·python·flask
半聋半瞎8 小时前
Flowable快速入门(Spring Boot整合版)
java·spring boot·后端·flowable
毕设源码-邱学长9 小时前
【开题答辩全过程】以 基于SpringBoot的理工学院学术档案管理系统为例,包含答辩的问题和答案
java·spring boot·后端
修己xj9 小时前
SpringBoot解析.mdb文件实战指南
java·spring boot·后端
lpfasd1239 小时前
Spring Boot 定时任务详解(从入门到实战)
spring boot·后端·python
moxiaoran57539 小时前
Go语言的文件操作
开发语言·后端·golang
赴前尘9 小时前
记一次golang进程执行卡住的问题排查
开发语言·后端·golang
码农小卡拉10 小时前
Prometheus 监控 SpringBoot 应用完整教程
spring boot·后端·grafana·prometheus
计算机毕设VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue球鞋购物系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
苏渡苇10 小时前
用 Spring Boot 项目给工厂装“遥控器”:一行 API 控制现场设备!
java·人工智能·spring boot·后端·网络协议·边缘计算