supervisor
linux 守护管理工具
安装
以yum为示例
yum install supervisor
设置程序运行命令
在 /etc/supervisord.d 创建 ini文件, 有的系统为conf文件,具体查看 /etc/supervisord.conf 中的配置
[program:xxx]
directory=/root/xxx
command=/root/xxx/xxx
logfile_maxbytes=100M
logfile_backups=3
# startsecs=10
autostart=true
autorestart=false
stdout_logfile=/root/xxx/log.log
stderr_logfile=/root/xxx/log.log
含义说明:
command:指定进程的启动命令,可以是一个脚本或者一个可执行文件2。
process_name:指定进程的名称,可以使用%(program_name)s和%(process_num)02d等变量来动态生成进程名2。
numprocs:指定要启动的进程的数量,如果大于1,那么每个进程的名称会加上一个序号2。
directory:指定进程的工作目录,如果不设置,那么进程会继承supervisor的工作目录2。
umask:指定进程的文件创建掩码,用于控制进程创建的文件的权限2。
priority:指定进程的启动优先级,数字越小,优先级越高2。
autostart:指定进程是否在supervisor启动时自动启动,可以是true或false2。
autorestart:指定进程是否在异常退出时自动重启,可以是true, false, unexpected或exitcodes2。
startsecs:指定进程启动后多少秒内没有退出才认为启动成功2。
startretries:指定进程启动失败后重试的次数2。
exitcodes:指定进程正常退出的退出码,用于和autorestart参数配合使用2。
stopsignal:指定用于停止进程的信号,可以是TERM, HUP, INT, QUIT, KILL, USR1, or USR22。
stopwaitsecs:指定发送停止信号后等待进程退出的秒数,如果超时,那么会强制杀死进程2。
stopasgroup:指定是否向进程所在的进程组发送停止信号,而不是只向进程本身发送2。
killasgroup:指定是否向进程所在的进程组发送强制杀死信号,而不是只向进程本身发送2。
user:指定以哪个用户身份运行进程,如果不设置,那么进程会继承supervisor的用户2。
redirect_stderr:指定是否将进程的标准错误输出重定向到标准输出,可以是true或false2。
stdout_logfile:指定进程的标准输出日志文件的路径,可以使用一些变量来动态生成日志文件名2。
stdout_logfile_maxbytes:指定进程的标准输出日志文件的最大大小,如果超过限制,那么会进行日志轮转2。
stdout_logfile_backups:指定进程的标准输出日志文件的备份数量2。
stdout_capture_maxbytes:指定进程的标准输出在事件通知中捕获的最大字节数2。
stdout_events_enabled:指定是否在进程的标准输出有写入时发送事件通知,可以是true或false2。
stderr_logfile:指定进程的标准错误输出日志文件的路径,可以使用一些变量来动态生成日志文件名2。
stderr_logfile_maxbytes:指定进程的标准错误输出日志文件的最大大小,如果超过限制,那么会进行日志轮转2。
stderr_logfile_backups:指定进程的标准错误输出日志文件的备份数量2。
stderr_capture_maxbytes:指定进程的标准错误输出在事件通知中捕获的最大字节数2。
stderr_events_enabled:指定是否在进程的标准错误输出有写入时发送事件通知,可以是true或false2。
environment:指定进程的环境变量,可以使用键值对的形式来设置2。
serverurl:指定进程用于连接supervisor的服务器地址,可以使用AUTO来自动获取2。
开机自启supervisor
systemctl start supervisord
常用命令
#关闭所有任务
supervisorctl shutdown
# 启动某个进程
supervisorctl start programxxx
# 重启某个进程
supervisorctl restart programxxx
# 停止全部进程 注:start、restart、stop都不会载入最新的配置文件
supervisorctl stop all
# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl reload
# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisorctl update
pip方式安装最新版
初始步骤
# 安装pip
yum -y groupinstall "Development Tools"
yum -y update
yum -y install python-pip
# 安装 supervisor, 命令在 /usr/local/bin 中
pip install supervisor
# 建立配置
echo_supervisord_conf > /etc/supervisord.conf
设置服务
vim /usr/lib/systemd/system/supervisord.service
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.conf
[Install]
WantedBy=multi-user.target
其他同上了