一、安装 Supervisor
1. 使用包管理器安装(以 Ubuntu/Debian 为例)
Supervisor 已经包含在许多 Linux 发行版的软件源中,可以通过以下命令安装:
sudo apt update
sudo apt install supervisor安装完成后,supervisord 会作为系统服务自动启动。
2. 使用 pip 安装(适用于多种系统)
如果你希望安装最新版,或者系统没有包含 Supervisor,可以用 Python 的包管理器 pip 安装:
pip install supervisor安装完成后,可以通过命令行调用 supervisord 和 supervisorctl。
二、配置 Supervisor
安装后,你需要编辑配置文件来告诉 Supervisor 需要管理哪些程序。
1. 配置文件位置
- 使用 apt 安装的,配置文件通常在
/etc/supervisor/supervisord.conf和/etc/supervisor/conf.d/目录下。 - pip 安装的,可以自己新建一个配置文件,比如
~/supervisord.conf。
2. 创建一个简单的配置示例
假设你有一个 Python 脚本 myapp.py,你想让 Supervisor 运行并管理它:
[program:myapp]
command=python /path/to/myapp.py
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log把这段配置保存到一个 .conf 文件中,比如放到 /etc/supervisor/conf.d/myapp.conf。
三、启动/管理 Supervisor
1. 重载配置并启动程序
sudo supervisorctl reread # 重新读取配置文件
sudo supervisorctl update # 根据新配置启动/停止程序2. 用 supervisorctl 管理进程
下面是常用命令:
sudo supervisorctl status # 查看所有进程状态
sudo supervisorctl start myapp # 启动 myapp
sudo supervisorctl stop myapp # 停止 myapp
sudo supervisorctl restart myapp # 重启 myapp四、示例流程
假如你已经安装好 Supervisor,可以做如下操作:
在
/etc/supervisor/conf.d/下新建myapp.conf,内容如上。更新 Supervisor:
sudo supervisorctl reread sudo supervisorctl update查看程序状态:
sudo supervisorctl status如果需要停止或重启程序:
sudo supervisorctl restart myapp
五、小结
- 安装:用系统包管理器(如 apt)或 pip 安装 Supervisor。
- 配置:将管理的程序写入配置文件中。
- 管理:使用
supervisorctl进行进程启动、停止、重启和查看状态。 - 日志:程序的标准输出和错误输出可以通过配置写到日志文件,方便查看。
其他常用命令列表
| 命令 | 说明 |
|---|---|
| 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 & 进程状态 |
作者:admin 创建时间:2025-10-20 17:46
最后编辑:admin 更新时间:2025-10-20 17:46
最后编辑:admin 更新时间:2025-10-20 17:46