控制运维的命令:
命令 | 作用 | 示例 |
supervisord | 启动 |
|
supervisorctl | 命令行客户端工具,用于管理进程 |
|
supervisorctl | 启动指定进程 |
|
supervisorctl | 停止指定进程 |
|
supervisorctl | 重启指定进程 |
|
supervisorctl reload | 重新加载配置文件,使新的配置生效 |
|
supervisorctl update | 根据更新的配置文件重启修改的进程 |
|
supervisorctl reread | 重新读取配置文件,检查是否有配置更改 |
|
相对较全的 program 配置:
[program:your_program_name]
command=/usr/bin/python /path/to/your_program.py ; 指定程序的启动命令
process_name=%(program_name)s ; 进程名称,可以使用占位符
numprocs=1 ; 启动的进程数量,默认为1
directory=/path/to/your_program_directory ; 进程的工作目录
umask=022 ; 设置进程的umask,默认为022
priority=999 ; 启动优先级,数值越小优先级越高,默认为999
autostart=true ; 是否随supervisord启动而自动启动
autorestart=true ; 进程退出时是否自动重启
startsecs=10 ; 进程启动后需要持续运行的时间(秒),默认为1
startretries=3 ; 启动失败时的重试次数,默认为3
exitcodes=0,2 ; 进程退出时认为成功的退出码,默认为0
stopsignal=TERM ; 用于停止进程的信号,默认为TERM
stopwaitsecs=10 ; 发送停止信号后等待进程退出的时间(秒),默认为10
stopasgroup=false ; 是否向整个进程组发送停止信号,默认为false
killasgroup=false ; 是否向整个进程组发送KILL信号,默认为false
user=your_username ; 以哪个用户身份运行进程,默认为当前用户
redirect_stderr=true ; 是否将标准错误重定向到标准输出
stdout_logfile=/var/log/supervisor/your_program_name.log ; 标准输出日志文件路径
stdout_logfile_maxbytes=50MB ; 标准输出日志文件最大大小,默认为50MB
stdout_logfile_backups=10 ; 标准输出日志文件备份数量,默认为10
stdout_capture_maxbytes=1MB ; 当进程处于STARTING状态时捕获标准输出的最大字节数,默认为0(无限制)
stdout_events_enabled=false ; 是否为标准输出日志启用事件记录
stderr_logfile=/var/log/supervisor/your_program_name.err ; 标准错误日志文件路径
stderr_logfile_maxbytes=50MB ; 标准错误日志文件最大大小,默认为50MB
stderr_logfile_backups=10 ; 标准错误日志文件备份数量,默认为10
stderr_capture_maxbytes=1MB ; 当进程处于STARTING状态时捕获标准错误的最大字节数,默认为0(无限制)
stderr_events_enabled=false ; 是否为标准错误日志启用事件记录
environment=KEY="value" ; 添加到进程环境中的键值对
serverurl=AUTO ; 使用supervisorctl时自动检测的服务器URL
转义问题
特殊字符 | 转义表示 | 说明 |
|
| 当百分号后面不是占位符时,使用双百分号来表示一个实际的百分号。 |
|
| 当需要在字符串中包含反斜杠时,使用双反斜杠。 |
|
| 当需要在双引号字符串中包含双引号时,使用反斜杠加双引号。 |
|
| 当需要在单引号字符串中包含单引号时,使用反斜杠加单引号。 |
|
| 当需要在值中包含分号但不想它被解释为注释时,使用反斜杠加分号。 |
注意事项
安装与配置:
- 确保以正确的方式安装supervisord,通常可以通过系统的包管理器进行安装。
- 配置文件
supervisord.conf
需要正确设置,包括日志路径、pid文件路径、包含的配置文件等。
进程配置:
- 在配置文件中为每个需要管理的进程正确设置
[program:your_program]
部分。 - 指定命令行参数时,要使用绝对路径,以避免路径问题。
- 设置合理的启动、重启和停止时间。
日志管理:
- 确保日志文件的路径存在且supervisord有权限写入。
- 定期检查和管理日志文件,避免日志文件无限制增长。
权限和用户:
- 以合适的用户身份运行supervisord,通常推荐使用非root用户。
- 确保supervisord管理的进程有正确的权限访问所需资源。
自动启动:
- 可以配置supervisord在系统启动时自动运行。
- 对于systemd系统,可以通过创建systemd服务文件来实现。
更新和升级:
- 在升级supervisord或其管理的程序时,要小心处理,避免服务中断。
- 更新配置文件后,记得重新加载supervisord。
备份配置:
- 定期备份supervisord的配置文件。