什么是supervisor
Supervisor是一套用Python开发的流行进程管理程序。将常规命令行进程转换为后台守护进程,监视进程的状态,并在异常终止时自动重新启动它。
主管使用fork/exec 将托管进程作为主管的子进程启动。这样,只需要在supervisor的配置文件中写入被管理进程的可执行文件的路径即可。
监督者知道,当子进程挂起时,父进程可以获得挂起子进程的准确信息,并可以选择是否唤醒并报警自己。
Supervisor 还提供为supervisord 或每个子进程设置非root 用户的功能。该用户可以管理相应的进程。
安装
通过epel-release 安装的CentOS
安装yum -y epel-release
yum -y 安装主管
安装Ubuntu/Debian/Deepin
适当更新
apt -y 安装主管
通过pip 安装
pip安装主管
配置
supervisord.conf供supervisord和supervisorctl读取和使用。您可以使用echo_supervisord_conf 生成默认配置文件。
如果启动任一应用程序时未指定-c 选项(该选项用于显式告知应用程序配置文件的名称),应用程序将按照以下位置中指定的顺序调用supervisord.conf:查找名为的文件。使用找到的第一个文件。
./supervisord.conf
./etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf(Supervisor 3.3.0 及更高版本)
./etc/supervisord.conf(与可执行文件相关)
./supervisord.conf(与可执行文件相关)
生成配置文件。
echo_supervisord_conf /etc/supervisord.conf
[unix_http_server] 设置
[unix_http_服务器]
文件=/tmp/supervisor.sock;
;chmod=0700 ;套接字权限(默认0700)
;chown=nobody:nogroup ;套接字用户组
;username=user ; 验证用户(默认为无)
;password=123 ; 确认密码(默认无)
[inet_http_server] 设置
提供用于处理任务的http服务页面
;[inet_http_服务器]
;port=127.0.0.1:9001 ; ip_address: 端口说明符,*所有iface 的: 端口
;username=user ; 默认没有用户名(开放服务器)
;password=123 ; 默认无密码(开放服务器)
[主管]设置
Supervisord相关配置。这是最重要的进程配置。如果您使用的是Docker 容器,通常会更改配置文件nodaemon=true 以确保容器生存,并且不要使用daemon 模式来运行程序。
【监督】
logfile=/tmp/supervisord.log;默认$CWD/supervisord.log
logfile_maxbytes=50MB; 主日志文件b4轮换的最大字节数;
logfile_backups=10 ; 主日志文件备份数量0 表示无,默认为10。
loglevel=信息;其他:调试、警告、跟踪信息;
pidfile=/tmp/supervisord.pid; 默认的supervisord.pid
nodaemon=false; 如果为true,则在前台启动。
minfds=1024; 默认启动文件描述符是1024。
minprocs=200;默认为200。
;umask=022 ; 进程文件创建的默认值022
;user=chrism ; 默认为当前用户,root 需要
;identifier=Supervisor ; 主管标识符,默认为“主管”。
;directory=/tmp ; 默认情况下启动时不执行cd。
;nocleanup=true ; 启动时不清理临时文件。
;childlogdir=/tmp ; 'AUTO' 子日志目录,默认为$TEMP
;environment=KEY='value' ; 添加到环境中的键值对
;strip_ansi=false ; 删除日志中的ansi 转义码。
[include] 设置
包含的设置允许您管理多个文件中的不同程序。此设置允许您列出多个文件(用空格或换行符分隔)。还可以包含通配符。文件名是相对于该文件解释的。包含文件* 不能包含文件本身。
;[包括]
;文件=相对/目录/*.ini
[program:x] 设置
定义守护进程的相关设置为:如果您有多个程序,只需设置多个配置部分即可。
;项目名
【程序:博客】
;脚本执行命令
命令=/usr/bin/python /opt/bin/test.py
; 是否与supervisor启动同时启动,默认为True
自动启动=真
; 当程序退出时,不会自动重新启动。可以使用三个选项来配置子进程挂起后自动重新启动:false、unexpected 和true。如果为false,则在任何情况下都不会重新启动。如果设置为true,则只要进程终止就会重新启动。
自动重启=假
; 该选项是自子进程启动以来的秒数。如果此时状态为Running,则认为启动成功。默认值为1
开始秒=1
; 该选项是启动失败后重试的次数。
启动尝试次数=3
;日志输出
stderr_logfile=/tmp/blog_stderr.log
stdout_logfile=/tmp/blog_stdout.log
运行脚本的用户
用户=欧凯
; 将stderr 重定向到stdout,默认为false
重定向标准错误=true
;stdout日志文件大小,默认50MB
stdout_logfile_maxbytes=20M
;stdout 日志文件备份号
stdout_logfile_backups=20
启动
系统安装的软件包通常都有相应的服务文件,可以在这里手动启动。
Supervisord -c /etc/supervisord.conf
任务控制
supervisorctl-c/etc/supervisord.conf
主管帮助
默认命令(帮助主题和输入):
=====================================
添加结束打开重新加载重新启动开始结束
删除avail fg pid关闭状态更新
清除主尾结束重载信号停止版本
以上是命令行支持的命令
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。