这是我的集体博客地址。
一、简介
Supervisor 是一款 Python 开发的过程管理系统,容许用户监督和管制 Linux 上的过程,能将一个一般命令行过程变为后盾守护过程,异样退出时能主动重启
具体介绍查阅:Supervisor Introduction
二、装置
Supervisor 反对 Linux 和 Mac,不反对 Windows
本文零碎为:centos,supervisor==4.2.4
pip3 install supervisor
装置实现后,在 Python bin 目录
上面会有这样几个文件。
ls /usr/local/Python38/bin
echo_supervisord_conf
supervisorctl
supervisord
注:因为 python bin 目录是退出了环境变量,所以能够间接执行这几个文件。
三、创立配置文件
-
首先建个目录,寄存配置文件:
mkdir supervisord
。echo_supervisord_conf > supervisord/supervisord.conf
若报错 -bash: /etc/supervisord.conf: Permission denied,须要切换到 root 用户。
-
创立子过程配置文件门路
mkdir -p supervisor/conf.d
前面咱们的工作,咱们想把它作为守护过程,都须要一个配置文件,咱们把这些配置文件放在 conf.d 目录上面。
-
批改配置文件
vim supervisord/supervisord.conf
将最初一部分改为
[include] # 因为我这里是放在 root 用户目录下,也能够放其它目录 files=/root/supervisord/conf.d/*.conf
四、初试
-
启动 supervisord
supervisord -c supervisord/supervisord.conf
这样就把
supervisord
启动了,咱们接下来能够把咱们的工作交给他去守护了,进行了会帮咱们主动重启。
查看版本
supervisord -v
-
编写简略的 Shell 脚本
vim supervisord/test.sh
内容如下
#!/bin/bash while : do echo `date '+%Y-%m-%d %H:%m:%S'` sleep 1 done
简略运行,
Ctrl + C
退出 -
创立子过程配置文件
vim supervisor/conf.d/test.conf
test.conf
内容如下:[program:test] command=sh /root/supervisord/test.sh priority=999 ; 绝对启动优先级,数值越小越优先,默认为 999 autostart=true ; 在 supervisor 启动时主动启动,默认为 true autorestart=true ; 在意外退出时重新启动,默认为 true startsecs=10 ; 子过程启动多少秒后状态为 running 则认为启动胜利,默认为 1 startretries=3 ; 尝试启动的最大次数,默认为 3 exitcodes=0,2 ; 过程的预期退出代码列表,默认为 0 stopsignal=QUIT ; 终止过程的信号,默认为 TERM stopwaitsecs=10 ; 在 SIGKILL 之前期待的最大秒数,默认为 10 user=root ; 在某用户下设置 uid 来启动程序,默认不切换用户 redirect_stderr=true ; 是否重定向 stdout 和 stderr,默认为 false stdout_logfile=/tmp/supervisor.stdout.log ; stdout 的输入文件,默认为 AUTO stdout_logfile_maxbytes=50MB ; stdout 最大文件大小,默认为 50MB stdout_logfile_backups=10 ; stdout 文件备份数,设为 0 则不备份,默认为 10
其实只须要配置 3 个参数,其它不必管:
command=sh /root/supervisord/test.sh
:咱们的子过程启动命令;stdout_logfile=/tmp/supervisor.stdout.log
: 日志;program:test
:过程名为test
,如果过程哪一天想进行启动等,须要过程名;
目前文件目录构造是这样的:
yum install tree
tree supervisord
supervisord
├── conf.d
│ └── test.conf
├── supervisord.conf
└── test.sh
- 从新读取配置并更新子过程
因为咱们的 supervisord
曾经启动了,能够通过 ps -ef | grep supervisord.conf
查看。增加了子过程配置文件,须要把它从新加载进来:
先进入 supervisord
目录: cd supervisord
,否则执行上面命令会有问题。
supervisorctl reread
再次查看过程状态
supervisorctl status
后果:
test RUNNING pid 30278, uptime 1:29:41
名为 test
的这个过程曾经作为守护过程在后盾运行,咱们来 kill 掉他:
kill 30278
再执行 supervisorctl status
,会发现状态立马由starting
,不一会变成running
,那么supervisord
的作用曾经很显著了,能够主动帮咱们主动监控工作。
注:对于子过程的增加、删除、启动、进行相干命令,见附录。
五、Web 界面
web 界面没多大用处,就是如果想启动、暂停过程是,不须要敲命令而已。
vim supervisord.conf
勾销正文
[inet_http_server]
port=*:9001 ; 此处改为 * 便于调试
重启 supervisord
supervisorctl reload
浏览器拜访:linux_ip:9001.
附录:supervisorctl 常用命令
新增某配置文件,从新加载
supervisorctl reread
改变某配置文件,从新加载
supervisorctl update
重启 supervisord
supervisorctl reload
查看所有过程状态
supervisorctl status
查看指定过程状态
supervisorctl status <name>
启动所有子过程
supervisorctl start all
启动指定子过程
supervisorctl start <name>
重启所有子过程
supervisorctl restart all
重启指定子过程
supervisorctl restart <name>
进行所有子过程
supervisorctl stop all
进行指定子过程
supervisorctl stop <name>
增加子过程到过程组
supervisorctl add <name>
从过程组移除子过程,须要先 stop。留神:移除后,须要应用 reread 和 update 能力从新运行该过程
supervisorctl reomve <name>