⚙️ 使用 Supervisor 管理进程的常用操作详解

Supervisor 是一款常用于 Linux 系统中的进程管理工具,支持守护进程启动、自动重启、日志跟踪等。
本教程详细说明其核心命令:reloadrereadupdaterestart 及其他常见操作。


🔄 1. reload

  • 作用:重新加载主配置文件并重启 Supervisor 管理的所有子进程
  • 使用场景:修改了 Supervisor 主配置文件或 conf.d 中的子进程配置

📌 命令:

supervisorctl reload

⚠️ 注意:此操作会断掉并重启所有原有的进程,适用于重大配置更新。


📂 2. reread

  • 作用:重新读取配置文件,检测变更,但并❌不重启进程
  • 使用场景:添加了新的进程或修改配置,想测试配置是否被识别

📌 命令:

supervisorctl reread

🟡 此命令仅“刷新配置”,不会立即生效,需要配合 update 才能生效。


🔃 3. update

  • 作用:应用 reread 后的配置变更,添加/移除/更新进程
  • 使用场景:添加新进程、移除旧进程、修改进程配置后实际执行更新

📌 命令:

supervisorctl update

📍 常与 reread 配套使用:

supervisorctl reread
supervisorctl update

➡️ 运作原理:

  • 新增的配置文件对应进程将被启动
  • 被删除的配置文件对应进程将被停止

🔁 4. restart

  • 作用:重启一个或多个具体进程,或全部进程
  • 使用场景:某个项目运行异常/更新后需手动重启

📌 重启单个进程:

supervisorctl restart myapp

📌 重启所有进程:

supervisorctl restart all

💡 注意:

  • 使用 all 时可能中断所有服务,请慎用
  • 单个进程重启可用于按需热更新

🔧 5. 其他常用命令列表

命令 说明
supervisorctl start <进程名> 启动指定进程
supervisorctl stop <进程名> 停止指定进程
supervisorctl restart <进程名>/all 重启指定或全部进程
supervisorctl status 显示所有受管理进程的实时运行状态
supervisorctl reread 重新加载配置(但不执行更新)
supervisorctl update 启用配置中新增/移除项
supervisorctl tail <进程名> 查看指定进程的实时日志(默认标准输出)
supervisorctl tail -f <进程名> 持续跟踪日志(类似于 tail -f 效果)

📌 示例场景:进程名为 myapp

操作 命令
重启配置 + 所有进程 supervisorctl reload
Reread 配置 supervisorctl reread
应用更新(通常配 reread) supervisorctl update
重启进程 myapp supervisorctl restart myapp
查看状态 supervisorctl status
查看日志 supervisorctl tail myapp

🧠 总结:reread vs update vs reload

操作 是否重新加载配置 是否重新应用变更 是否重启进程 使用时机说明
reread ✅ 是 ❌ 否 ❌ 否 检查变更是否被识别
update ✅ 是 ✅ 是 ✅ 部分/新增进程 应用变化(如添加新进程)
reload ✅ 是 ✅ 是 ✅ 所有进程 强力刷新整个 supervisor & 进程状态

📘 小贴士

  • 配置修改流程推荐顺序:

    supervisorctl reread
    supervisorctl update
  • 查看配置文件路径:

    • 主配置文件:/etc/supervisord.conf 或 /etc/supervisor/supervisord.conf
    • 子进程配置示例路径:/etc/supervisor/conf.d/*.conf
  • 查看 supervisor 是否正在工作:

    systemctl status supervisor
作者:freed  创建时间:2025-03-28 14:26
最后编辑:freed  更新时间:2025-03-28 14:27