首页/系统/Linux 运维命令速查/supervisorctl 进程守护管理
进程与作业69 条

supervisorctl 进程守护管理

supervisor 的 CLI:status/restart/tail 管理常驻脚本进程(非 systemd 场景常用),改配置后 reread + update 生效。

Linux 运维命令速查系统更新于 2026-10-13

supervisorctl 是什么

supervisorctl 是进程管理工具 supervisor 的命令行客户端,用来查看状态、启停重启、跟踪日志。supervisor 以守护进程方式托管一批常驻脚本或不便写成 systemd 单元的应用,按 /etc/supervisord.d/*.ini 中的定义拉起进程,并在退出后自动重启。改完配置必须先 reread 再 update,新配置才会生效。

基本信息

所属supervisor(Python 实现,非内核组件)
语法supervisorctl {status|start|stop|restart|tail} 名称
配置文件/etc/supervisord.conf 与 /etc/supervisord.d/*.ini
前置条件supervisord 主进程本身处于运行状态

典型使用场景

  • 托管以脚本方式启动的常驻进程,省去编写 systemd 单元
  • 面板或容器环境中统一查看多个应用进程状态
  • 应用异常退出后自动拉起,减少人工介入
  • 只滚动重启某个 worker,不影响其它服务
  • 实时跟踪托管进程的标准输出与错误输出
  • 改完启动命令或环境变量后让配置真正生效

常用示例

常用示例
supervisorctl status                 # 查看全部托管进程状态
supervisorctl status app-worker      # 只看单个进程
supervisorctl restart app-worker     # 重启单个进程
supervisorctl stop all               # 停止全部托管进程
supervisorctl tail -f app-worker     # 实时跟踪该进程输出
supervisorctl tail app-worker stderr # 只看错误输出
supervisorctl reread                 # 重新读取配置文件
supervisorctl update                 # 按新配置增删改托管项

常用子命令

子命令作用备注
status列出状态与 PID最常用的入口
start/stop/restart启动、停止、重启可带进程名或 all
reread重新读取配置只加载配置,不动运行中的进程
update应用新配置新增或删除托管项并处理变更项
tail查看 stdout/stderr-f 可持续跟踪输出
改完 ini 必须执行 reread 再 update,否则运行的还是旧命令。只做 restart 并不会让新配置生效,这是最常见的误区。
不要对托管进程直接 kill:supervisor 会按 autorestart 策略把它拉回来,看起来像「杀不死」。要改变行为应修改配置文件并 update。
同一台主机上 systemd 与 supervisor 可能并存:先用 ps --forest 看父进程确认进程由谁拉起,再决定去改哪个配置,否则会出现改了半天不生效的情况。

易错点

  • 改了 ini 只执行 restart 不做 reread 与 update:进程仍跑旧命令,被误判成配置无效
  • 直接 kill 托管进程:被 supervisor 自动拉起,反复失败还刷满日志
  • 命令行能跑但 supervisor 起不来:它不加载登录 shell 的 PATH,配置里要用绝对路径或 environment= 显式声明
  • 把 STARTING 卡住当成正常:startsecs 与实际启动耗时不匹配时会不断重启
  • 排查前不确定谁来拉起进程:跳过了 ps --forest 确认,改错配置文件

数据来源与参考

  • supervisor 官方文档(supervisord.org)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌