Supervisor 是一个用 Python 编写的进程监控工具,用于管理和监控 Linux/Unix 系统中的进程,确保它们在崩溃时能够自动重启,或者始终保持在运行状态。 以下是配置 Supervisor 的基本步骤和常见配置选项:
1. 安装 Supervisor:
在大多数基于 Debian/Ubuntu 的系统中,可以使用 apt 安装 Supervisor:
sudo apt update
sudo apt install supervisor
对于基于 Red Hat/CentOS 的系统,使用 yum 或 dnf 安装:
sudo yum install supervisor # 对于较旧的系统
sudo dnf install supervisor # 对于较新的系统
2. 配置文件:
Supervisor 的主配置文件通常位于 /etc/supervisord.conf。您也可以在此目录下创建子配置文件,放置在 /etc/supervisor/conf.d/ 目录下,以保持配置的模块化。子配置文件通常以 .conf 为扩展名。
3. 基本配置项:
/etc/supervisord.conf 或 /etc/supervisor/conf.d/*.conf:
[unix_http_server] ; Unix socket 文件路径和权限
file=/var/run/supervisor.sock ; (默认路径)
chmod=0700 ; socket 文件权限
[supervisord] ; Supervisor 主程序配置
logfile=/var/log/supervisor/supervisord.log ; 日志文件路径
pidfile=/var/run/supervisord.pid ; PID 文件路径
childlogdir=/var/log/supervisor ; 子进程日志目录
[rpcinterface:supervisor] ; RPC 接口配置
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl] ; Supervisor 控制台配置
serverurl=unix:///var/run/supervisor.sock ; 与主程序通信的 socket 地址
[program:your_program_name] ; 进程配置,每个要监控的进程需要一个这样的块
command=/path/to/your/command --arg1 value1 --arg2 value2 ; 要运行的命令及参数
directory=/path/to/working/directory ; 命令的工作目录(可选)
user=your_username ; 以哪个用户身份运行(可选)
autostart=true ; 是否随 Supervisor 启动时自动启动(默认为 true)
autorestart=true ; 程序退出时是否自动重启(默认为 unexpected)
startsecs=5 ; 程序启动后等待其稳定运行的秒数(默认为 1)
startretries=3 ; 启动失败时重试次数(默认为 3)
stopsignal=QUIT ; 用于停止进程的信号(默认为 TERM)
stopwaitsecs=10 ; 发送停止信号后等待进程终止的秒数(默认为 0)
stdout_logfile=/var/log/supervisor/your_program_name.log ; 标准输出日志文件(可选)
stderr_logfile=/var/log/supervisor/your_program_name.err.log ; 标准错误日志文件(可选)
environment=VAR1=value1,VAR2=value2 ; 设置环境变量(可选)
priority=999 ; 进程优先级,数字越小优先级越高(默认为 999)
4. 添加要监控的进程:
在 [program:your_program_name] 部分,为每个要由 Supervisor 管理的进程配置一个独立的配置块。配置项包括:
- command: 要运行的命令及参数。
- directory: (可选)命令的工作目录。
- user: (可选)以哪个用户身份运行。
- autostart: 是否随 Supervisor 启动时自动启动。
- autorestart: 程序退出时是否自动重启。
- startsecs: 程序启动后等待其稳定运行的秒数。
- startretries: 启动失败时重试次数。
- stopsignal: 用于停止进程的信号。
- stopwaitsecs: 发送停止信号后等待进程终止的秒数。
- stdout_logfile: 标准输出日志文件。
- stderr_logfile: 标准错误日志文件。
- environment: 设置环境变量。
- priority: 进程优先级,数字越小优先级越高。
- 启动和管理 Supervisor: 启动 Supervisor:
sudo systemctl start supervisord
启用开机自启:
sudo systemctl enable supervisord
查看状态:
sudo systemctl status supervisord
使用 Supervisorctl 控制台: 启动控制台:
sudo supervisorctl
在控制台中,可以进行以下操作:
列出所有进程:
supervisorctl status
启动进程:
supervisorctl start your_program_name
停止进程:
supervisorctl stop your_program_name
重启进程:
supervisorctl restart your_program_name
查看进程日志:
supervisorctl tail your_program_name
- 更新配置后重启 Supervisor: 当修改了配置文件后,需要重新加载并重启 Supervisor 以应用更改:
sudo supervisorctl reread
sudo supervisorctl update
以上就是 Supervisor 的基本配置过程和常用配置选项。根据实际需求调整配置文件,确保所需进程被正确监控和管理。