supervisor 是一个 linux 进程管理工具,能确保关键进程持续运行并在崩溃时自动重启。1. 安装 supervisor:在 debian/ubuntu 上使用 apt,centos/rhel 上使用 yum;2. 创建配置文件定义进程,包括 command、user、autostart、autorestart 等参数;3. 更新配置使用 supervisorctl reread 与 update;4. 使用 supervisorctl 命令管理进程启停与状态查看;5. 设置开机自启动通过 systemctl 或 update-rc.d;6. startsecs 参数用于判定进程启动成功所需时间;7. 使用 [group:] 定义进程组可统一管理多个进程;8. 监控资源需结合 ps、top 或专业工具如 prometheus 实现。
Supervisor 是一个强大的进程管理工具,它能确保你的 Linux 系统上的关键进程持续运行,并在进程崩溃时自动重启。配置 Supervisor 的关键在于创建一个或多个配置文件,定义你要管理的进程,然后让 Supervisor 读取这些配置并启动、监控这些进程。
解决方案
安装 Supervisor:
在 Debian/Ubuntu 上:
sudo apt update sudo apt install supervisor
在 CentOS/RHEL 上:
sudo yum install epel-release # 如果没有 EPEL 仓库 sudo yum install supervisor
创建配置文件:
Supervisor 的配置文件通常位于
/etc/supervisor/conf.d/
my_app.conf
sudo nano /etc/supervisor/conf.d/my_app.conf
配置文件内容示例:
[program:my_app] command=/path/to/your/application ; 启动命令 user=your_user ; 运行用户 autostart=true ; Supervisor 启动时自动启动 autorestart=true ; 进程崩溃时自动重启 redirect_stderr=true ; 重定向标准错误输出 stdout_logfile=/var/log/my_app.log ; 标准输出日志文件
[program:my_app]
my_app
command
user
autostart
true
autorestart
true
redirect_stderr
true
stdout_logfile
更新 Supervisor 配置:
创建或修改配置文件后,需要让 Supervisor 重新加载配置。
sudo supervisorctl reread sudo supervisorctl update
reread
update
启动、停止和重启进程:
使用
supervisorctl
sudo supervisorctl start my_app ; 启动 my_app 进程 sudo supervisorctl stop my_app ; 停止 my_app 进程 sudo supervisorctl restart my_app ; 重启 my_app 进程 sudo supervisorctl status my_app ; 查看 my_app 进程状态 sudo supervisorctl status ; 查看所有进程状态
开机自启动 Supervisor:
Supervisor 通常会自动配置为开机自启动。如果没有,可以使用以下命令手动配置:
在 systemd 系统上 (例如 Ubuntu 16.04+, CentOS 7+):
sudo systemctl enable supervisor
在 SysVinit 系统上 (较旧的 Linux 发行版):
sudo update-rc.d supervisor defaults
Supervisor 配置文件中的 startsecs
startsecs
startsecs
autorestart
如何使用 Supervisor 管理多个进程组?
Supervisor 支持进程组的概念,允许你同时管理多个相关的进程。你可以在配置文件中使用
[group:group_name]
例如:
[group:web_app] programs=my_app, celery_worker [program:my_app] command=/path/to/your/web_app user=www-data autostart=true autorestart=true [program:celery_worker] command=/path/to/your/celery_worker user=www-data autostart=true autorestart=true
然后,你可以使用
supervisorctl
sudo supervisorctl start web_app:* ; 启动 web_app 组中的所有进程 sudo supervisorctl stop web_app:* ; 停止 web_app 组中的所有进程 sudo supervisorctl restart web_app:* ; 重启 web_app 组中的所有进程 sudo supervisorctl status web_app:* ; 查看 web_app 组中所有进程的状态
注意,
web_app:*
*
如何监控 Supervisor 管理的进程的 CPU 和内存使用情况?
Supervisor 本身不提供直接的 CPU 和内存监控功能。但是,你可以结合其他工具来实现这个目标。一个常见的方法是使用
ps
awk
top
例如,你可以创建一个脚本,定期运行以下命令,并将结果写入日志文件:
#!/bin/bash process_name="my_app" # 替换为你的进程名称 pid=$(pidof $process_name) if [ -n "$pid" ]; then cpu_usage=$(ps -p $pid -o %cpu | tail -n 1) mem_usage=$(ps -p $pid -o %mem | tail -n 1) echo "$(date) - CPU: $cpu_usage%, Memory: $mem_usage%" >> /var/log/my_app_resource.log else echo "$(date) - Process '$process_name' not found." >> /var/log/my_app_resource.log fi
然后,你可以使用 Supervisor 来管理这个监控脚本,并设置定期执行。 另一种选择是使用更专业的监控工具,例如 Prometheus 或 Grafana,它们可以提供更全面的监控指标和可视化界面。 你需要配置这些工具来收集 Supervisor 管理的进程的指标,并将数据展示出来。 具体的配置方法取决于你选择的监控工具。
以上就是如何配置Linux进程守护 supervisor进程管理方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号