一、安装 Supervisor

1. 使用包管理器安装(以 Ubuntu/Debian 为例)

Supervisor 已经包含在许多 Linux 发行版的软件源中,可以通过以下命令安装:

sudo apt update
sudo apt install supervisor

安装完成后,supervisord 会作为系统服务自动启动。


2. 使用 pip 安装(适用于多种系统)

如果你希望安装最新版,或者系统没有包含 Supervisor,可以用 Python 的包管理器 pip 安装:

pip install supervisor

安装完成后,可以通过命令行调用 supervisordsupervisorctl


二、配置 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,可以做如下操作:

  1. /etc/supervisor/conf.d/ 下新建 myapp.conf,内容如上。

  2. 更新 Supervisor:

     sudo supervisorctl reread
     sudo supervisorctl update
  3. 查看程序状态:

     sudo supervisorctl status
  4. 如果需要停止或重启程序:

     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