supervisord 配置文件+注意事项+转义_配置文件

控制运维的命令:

命令

作用

示例

supervisord

启动 supervisord 守护进程

supervisord

supervisorctl

命令行客户端工具,用于管理进程

supervisorctl status

supervisorctl

启动指定进程

supervisorctl start <process_name>

supervisorctl

停止指定进程

supervisorctl stop <process_name>

supervisorctl

重启指定进程

supervisorctl restart <process_name>

supervisorctl reload

重新加载配置文件,使新的配置生效

supervisorctl reload

supervisorctl update

根据更新的配置文件重启修改的进程

supervisorctl update

supervisorctl reread

重新读取配置文件,检查是否有配置更改

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的配置文件。