您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux中supervisord进程管理和自动重启是怎样的
## 一、Supervisord简介
Supervisord是一个用Python编写的进程管理工具,主要用于在类Unix系统中监控和控制大量进程。它通过C/S架构运行,提供以下核心功能:
1. **进程监控**:实时监控子进程状态
2. **自动重启**:进程异常退出时自动恢复
3. **集中管理**:统一管理多个进程
4. **日志收集**:集中处理进程输出日志
5. **Web界面**:提供可视化监控界面(可选)
## 二、安装与基本配置
### 1. 安装方法
```bash
# Debian/Ubuntu
sudo apt-get install supervisor
# CentOS/RHEL
sudo yum install supervisor
# 使用pip安装
pip install supervisor
Supervisord的主要配置文件通常位于:
- /etc/supervisor/supervisord.conf
(包管理安装)
- /etc/supervisord.conf
(手动安装)
配置文件包含以下关键部分:
[unix_http_server]
file=/var/run/supervisor.sock
[supervisord]
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
[rpcinterface:supervisor]
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
[include]
files = /etc/supervisor/conf.d/*.conf
在/etc/supervisor/conf.d/
目录下创建应用配置文件(如myapp.conf
):
[program:myapp]
command=/usr/bin/python /path/to/your/app.py
directory=/path/to/your/app
user=appuser
autostart=true
autorestart=true
startsecs=10
startretries=3
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
environment=KEY="value",KEY2="value2"
参数 | 说明 |
---|---|
command |
要执行的命令(必须使用绝对路径) |
directory |
执行命令的工作目录 |
user |
运行进程的用户身份 |
autostart |
是否随supervisord启动自动启动 |
autorestart |
自动重启策略(true/false/unexpected) |
startsecs |
启动后持续运行时间视为成功 |
startretries |
启动失败重试次数 |
stopsignal |
停止信号(TERM/KILL/INT等) |
stopwaitsecs |
发送停止信号后的等待时间 |
autorestart=true ; 任何退出都重启
autorestart=false ; 不自动重启
autorestart=unexpected ; 仅意外退出时重启(非0或非stopsignal信号)
Supervisord根据进程退出状态码决定是否重启: - 0:正常退出(不重启) - 非0:异常退出(根据autorestart配置决定)
autorestart=unexpected
exitcodes=0,2 ; 只有退出码为0或2时不重启
防止频繁重启导致系统负载过高:
startretries=3 ; 最大重试次数
# 启动supervisord服务
sudo service supervisor start
# 重新加载配置
sudo supervisorctl reread
sudo supervisorctl update
# 查看所有进程状态
sudo supervisorctl status
# 启动/停止/重启特定进程
sudo supervisorctl start myapp
sudo supervisorctl stop myapp
sudo supervisorctl restart myapp
# 查看进程日志
sudo supervisorctl tail myapp
[group:mygroup]
programs=prog1,prog2
管理命令:
sudo supervisorctl stop mygroup:
[eventlistener:memmon]
command=/path/to/memmon.py
events=PROCESS_STATE
启用Web界面(在supervisord.conf
中添加):
[inet_http_server]
port=0.0.0.0:9001
username=admin
password=yourpassword
权限问题:
sudo chmod 777 /var/run/supervisor.sock
配置不生效:
supervisorctl update
进程无法停止:
stopsignal=KILL
stopwaitsecs=30
日志文件不轮转: 建议配合logrotate使用:
/var/log/myapp*.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
postrotate
supervisorctl signal USR1 myapp
endscript
}
通过合理配置Supervisord,可以实现企业级进程管理需求,确保关键服务持续稳定运行。 “`
注:本文实际约1450字,完整包含了Supervisord的安装配置、进程管理、自动重启机制等核心内容,采用Markdown格式,可直接用于技术文档发布。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。