⚙️ 使用 Supervisor 管理进程的常用操作详解
Supervisor 是一款常用于 Linux 系统中的进程管理工具,支持守护进程启动、自动重启、日志跟踪等。
本教程详细说明其核心命令:reload
、reread
、update
、restart
及其他常见操作。
🔄 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
最后编辑:freed 更新时间:2025-03-28 14:27