Supervisor教程

Supervisor教程

解决方案goocz2025-03-23 18:06:4524A+A-

Supervisor教程

简介

Supervisor:一个基于Python的进程管理工具,采用C/S模式工作。


  • 它可以启动、停止、监听进程,并提供Web管理页面。
  • 它会监听进程的状态,发现它们挂掉了就立即重启。
  • 不能管理守护进程(daemon),进程必须前台(foreground) 运行

安装:

yum install supervisor

  • 在主机上启动:

systemctl start supervisord

  • 在容器中启动:

supervisord

-c /etc/supervisord.conf # 使用指定的配置文件

基本用法:

命令行控制端

supervisorctl

supervisorctl -c
/etc/supervisor/supervisord.conf # 使用指定的配置文件

supervisorctl start # 启动某个进程(name为all时会处理配置文件中的所有进程)

supervisorctl stop # 停止某个进程(name为all时会处理配置文件中的所有进程)

supervisorctl restart # 重启某个进程(name为all时会处理配置文件中的所有进程)

supervisorctl status # 查看所有进程的状态

supervisorctl update # 重新加载配置文件

supervisorctl reload # 重启supervisord,请不要在容器中操作这个命令

supervisorctl shutdown # 停止supervisord,请不要在容器中操作这个命令

supervisord的主配置文件是/etc/supervisord.conf,还会导入/etc/supervisord.d/目录下的 .ini 文件。


/etc/supervisor/supervisord.conf的主要参数及解释如下

[unix_http_server]

file=
/var/run/supervisor/supervisor.sock ; supervisor的sock文件的路径

;chmod=0700 ; sock文件的权限(默认0700)

;chown=nobody:nogroup ; sock文件的uid:gid

;username=user ; 用户名(默认无)

;password=123 ; 密码(默认无)

;[inet_http_server] ; Web管理页面

;port=127.0.0.1:9001 ; 设置*:port则监听所有IP来源

;username=user ; 用户名(默认无)

;password=123 ; 密码(默认无)

[include] ; 导入其它配置文件

files = conf.d/*.conf conf.d/*.ini

将进程的配置文件保存为 /etc/supervisord.d/*.ini,主要内容如下。

[program:ping] ; 被管理的进程名

command=/bin/ping 127.0.0.1 ; 该进程的启动命令(注意不能作为守护进程启动)

;directory=/root ; 执行启动命令前要切换到的目录

user=root ; 用哪个用户启动该进程

;numprocs=1 ; 该进程要启动多少个副本

;priority=999 ; 进程启动的优先级,值越小则越优先启动

;autostart=true ; 当supervisord启动时是否自动启动该进程

;autorestart=true ; 当进程意外停止时是否自动重启

;startretries=3 ; 启动失败后的重试次数

;startsecs=1 ; 启动几秒后进程没有异常退出,就视作进程启动成功了

;exitcodes=0,2 ; 进程正常的退出码,如果返回其它退出码则视作异常停止

;stdout_logfile=/var/log/nginx/stdout.log ; stdout日志文件的保存路径(该目录需要已存在)

;stdout_logfile_maxbytes=50MB ; stdout日志文件的最大大小,超出则会循环写入。设置成0则不限制大小。

;stdout_logfile_backups=10 ; stdout日志文件的备份数量。设置成0则不备份

;redirect_stderr=false ; 是否把stderr重定向到stdout

;stderr_logfile=/var/log/nginx/stderr.log ; stderr日志文件的保存路径(该目录需要已存在)

高级用法:

使用系统环境变量方法

通过supervisord.conf配置引入系统变量并重命名,


supervisord.conf

environmentSSH_AUTOSTART_SSHD="%(ENV_ENABLE_SSHD_WRAPPER)s",SSH_AUTOSTART_SSHD为supervisor环境中的环境变量名,ENV_ENABLE_SSHD_WRAPPER为系统中的环境变量名,%(xxx)s表示取值

/etc/supervisor/supervisord.conf

[supervisord]

environment = SSH_AUTOSTART_SSHD="%(ENV_ENABLE_SSHD_WRAPPER)s",SSH_AUTOSTART_SSHD_BOOTSTRAP="%(ENV_ENABLE_SSHD_BOOTSTRAP)s",SSH_AUTOSTART_SUPERVISOR_STDOUT="%(ENV_ENABLE_SSHD_BOOTSTRAP)s",SSH_TIMEZONE="%(ENV_SYSTEM_TIMEZONE)s"

logfile = /dev/null

logfile_maxbytes = 0

logfile_backups = 0

loglevel = info

minfds = 1024

minprocs = 200

nodaemon = true

pidfile = /var/run/supervisord.pid

user = root

[include]

files = conf.d/*.conf conf.d/*.ini


/etc/supervisor/conf.d/00-supervisor_stdout.conf,留意
autostart

[eventlistener:supervisor_stdout]

autostart = %(ENV_ENABLE_SUPERVISOR_STDOUT)s

buffer_size = 100

command = /usr/bin/supervisor_stdout

events = PROCESS_LOG

priority = 1

result_handler = supervisor_stdout:event_handler

startsecs = 0

user = root

/etc/supervisor/conf.d/10-system-timezone-wrapper.conf

[program:system-timezone-wrapper]

autorestart = false

autostart = true

command = /usr/sbin/system-timezone-wrapper --verbose

priority = 10

startretries = 0

startsecs = 0

stderr_logfile = /dev/stderr

stderr_logfile_maxbytes = 0

stdout_logfile = /dev/stdout

stdout_logfile_maxbytes = 0


/etc/supervisor/conf.d/20-sshd-bootstrap.conf,留意
autostart

[program:sshd-bootstrap]

autorestart = false

autostart = %(ENV_ENABLE_SSHD_BOOTSTRAP)s

command = /usr/sbin/sshd-bootstrap --verbose

priority = 20

startretries = 0

startsecs = 0

stderr_logfile = /dev/stderr

stderr_logfile_maxbytes = 0

stdout_logfile = /dev/stdout

stdout_logfile_maxbytes = 0

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5