Supervisord 进程管理工具
Supervisord 是一个用 Python 编写的进程管理工具,可以方便地管理和监控后台进程。它非常适合用于管理需要常驻后台运行的 Python 脚本或其他应用程序。以下是使用 Supervisord 的详细步骤:
1. 安装 Supervisord
在大多数 Linux 发行版中,可以通过包管理器安装 Supervisord。
Ubuntu/Debian:
bash
sudo apt update sudo apt install supervisor
CentOS/RHEL:
bash
sudo yum install supervisor
使用 pip 安装(推荐):
bash
pip install supervisor
2. 配置 Supervisord
Supervisord 的配置文件通常位于 /etc/supervisor/ 目录下。主配置文件是 /etc/supervisor/supervisord.conf,但我们通常不需要直接修改它。
创建自定义配置文件
在 /etc/supervisor/conf.d/ 目录下为你的 Python 脚本创建一个配置文件,例如 my_script.conf:
bash
sudo nano /etc/supervisor/conf.d/my_script.conf
文件内容如下:
ini
[program:my_script] command=/usr/bin/python3 /path/to/your_script.py directory=/path/to/your/script/directory autostart=true autorestart=true stderr_logfile=/var/log/my_script.err.log stdout_logfile=/var/log/my_script.out.log user=your_username
command:运行的命令(Python 脚本路径)。
directory:脚本的工作目录。
autostart:是否随 Supervisord 启动而自动启动。
autorestart:是否在脚本崩溃后自动重启。
stderr_logfile 和 stdout_logfile:标准错误和标准输出的日志文件路径。
user:运行脚本的用户。
3. 启动 Supervisord
启动 Supervisord 服务
bash
sudo systemctl start supervisor
设置 Supervisord 开机自启动
bash
sudo systemctl enable supervisor
4. 更新 Supervisord 配置
每次修改配置文件后,需要让 Supervisord 重新加载配置:
bash
sudo supervisorctl reread sudo supervisorctl update
5. 管理进程
使用 supervisorctl 命令管理进程。
启动进程
bash
sudo supervisorctl start my_script
停止进程
bash
sudo supervisorctl stop my_script
重启进程
bash
sudo supervisorctl restart my_script
查看进程状态
bash
sudo supervisorctl status
查看所有进程
bash
sudo supervisorctl
6. 查看日志
Supervisord 会记录脚本的标准输出和标准错误到指定的日志文件中。你可以通过以下命令查看日志:
bash
tail -f /var/log/my_script.out.log tail -f /var/log/my_script.err.log
7. 其他常用命令
重新加载 Supervisord
bash
sudo supervisorctl reload
停止所有进程
bash
sudo supervisorctl stop all
启动所有进程
bash
sudo supervisorctl start all
8. 示例:管理多个进程
如果你有多个 Python 脚本需要管理,可以为每个脚本创建一个单独的配置文件,或者在一个配置文件中定义多个 [program] 块。
例如:
ini
[program:script1] command=/usr/bin/python3 /path/to/script1.py autostart=true autorestart=true stderr_logfile=/var/log/script1.err.log stdout_logfile=/var/log/script1.out.log [program:script2] command=/usr/bin/python3 /path/to/script2.py autostart=true autorestart=true stderr_logfile=/var/log/script2.err.log stdout_logfile=/var/log/script2.out.log
总结
Supervisord 是一个强大的进程管理工具,适合管理需要常驻后台运行的 Python 脚本。
通过配置文件可以轻松管理多个进程,并实现自动重启和日志记录。
使用 supervisorctl 可以方便地控制进程的启动、停止和状态查看。