Supervisord 进程管理工具

作者: adm 分类: python 发布时间: 2025-01-28

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 可以方便地控制进程的启动、停止和状态查看。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!