#安装pip
wget https://bootstrap.pypa.io/2.6/get-pip.py
python get-pip.py
#安装supervisor
==3.3.1表示安装3.3.1版本
pip install supervisor==3.3.1
#初始化配置文件
mkdir -p /etc/superviso
echo_supervisord_conf > /etc/supervisor/supervisord.conf
#supervisor管理进程需要是前台进程,所以不能使用-d之类,或者后台运行&的参数
#修改默认配置文件
cat >/etc/supervisor/supervisord.conf<<'EOF'
[unix_http_server]
file=/etc/supervisor/supervisor.sock
[supervisord]
logfile=/etc/supervisor/supervisord.log
logfile_maxbytes=50MB
logfile_backups=10
loglevel=info
pidfile=/etc/supervisor/supervisord.pid
nodaemon=false
minfds=1024
minprocs=200
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///etc/supervisor/supervisor.sock
;自己添加的要监控的命令
[program:sersync1]
command=/soft/local/sersync/bin/sersync2 -n 4 -o /soft/local/sersync/conf/confxml.xml -r
priority=1
numprocs=1
autostart=true
autorestart=true
startretries=10
exitcodes=0
stopsignal=KILL
stopwaitsecs=10
redirect_stderr=true
redirect_stdout=true
stdout_logfile_maxbytes=20MB
stdout_logfile=/etc/supervisor/log/sersync1.log
stdout_logfile_backups=10
stderr_logfile=/etc/supervisor/log/sersync1.err.log
stderr_logfile_maxbytes=20MB
stderr_logfile_backups=10
;自己添加的要监控的命令
[program:sersync2]
command=/soft/local/sersync/bin/sersync2 -n 2 -o /soft/local/sersync/conf/conf_ngx_cert.xml -r
priority=1
numprocs=1
autostart=true
autorestart=true
startretries=10
exitcodes=0
stopsignal=KILL
stopwaitsecs=10
redirect_stderr=true
redirect_stdout=true
stdout_logfile_maxbytes=20MB
stdout_logfile=/etc/supervisor/log/sersync2.log
stdout_logfile_backups=10
stderr_logfile=/etc/supervisor/log/sersync2.err.log
stderr_logfile_maxbytes=20MB
stderr_logfile_backups=10
EOF
#启动程序
supervisord -c /etc/supervisor/supervisord.conf && supervisorctl -c /etc/supervisor/supervisord.conf
#成功启动
[root@ supervisor]# supervisorctl -c /etc/supervisor/supervisord.conf
sersync1 STARTING
sersync2 STARTING
#被管理的进程
[root@ ~]# ps -ef|grep sersync
root 833 801 0 10:48 pts/0 00:00:00 grep sersync
root 23992 23989 0 Mar01 ? 00:00:00 /soft/local/sersync/bin/sersync2 -n 2 -o /soft/local/sersync/conf/conf_ngx_cert.xml -r
root 24337 23989 0 04:02 ? 00:00:00 /soft/local/sersync/bin/sersync2 -n 10 -o /soft/local/sersync/conf/confxml.xml -r
#杀死进程
[root@supervisor]# killall sersync2
[root@supervisor]# killall sersync2
[root@supervisor]# killall sersync2
#杀死过后进程重新启动
[root@ ~]# ps -ef|grep sersync
root 833 801 0 10:48 pts/0 00:00:00 grep sersync
root 23992 23989 0 Mar01 ? 00:00:00 /soft/local/sersync/bin/sersync2 -n 2 -o /soft/local/sersync/conf/conf_ngx_cert.xml -r
root 24337 23989 0 04:02 ? 00:00:00 /soft/local/sersync/bin/sersync2 -n 10 -o /soft/local/sersync/conf/confxml.xml -r
#配置说明
[unix_http_server]
file=/etc/supervisor/supervisor.sock ;socket文件的路径,supervisorctl用XML_RPC和super
visord通信就是通过它进行
[supervisord];这个主要是定义supervisord ;这个服务端进程的一些参数的,这个必须设置,不设置,supervisor就不用干活了
logfile=/etc/supervisor/supervisord.log ;这个是supervisord这个主进程的日志路径,注意和子进程的日志不搭嘎。
logfile_maxbytes=50MB ;这个是上面那个日志文件的最大的大小,当超过50M的时候,会生成一个新的日志文件,当设置为0时,表示不限制文件大小。默认值是50M,非必须设置。
logfile_backups=10 ;日志文件保持的数量,上面的日志文件大于50M时,就会生成一个新文件。文件数量大于10时,最初的老文件被新文件覆盖,文件数量将保持为10。当设置为0时,表示不限制文件的数量。默认情况下为10。。。非必须设置
loglevel=info ;日志级别,有critical, error, warn, info, debug, trace, orblather等默认为info。。。非必须设置项
pidfile=/etc/supervisor/supervisord.pid ;supervisord的pid文件路径。默认为$CWD/supervisord.pid。。。非必须设置
nodaemon=false ;如果是true,supervisord进程将在前台运行
minfds=1024 ;这个是最少系统空闲的文件描述符,低于这个值supervisor将不会启动。系统的文件描述符在这里设置cat /proc/sys/fs/file‐max默认情况下为1024。。。非必须设置
minprocs=200 ;最小可用的进程描述符,低于这个值supervisor也将不会正常启动。ulimit ‐u这个命令,可以查看linux下面用户的最大进程数,默认为200。。。非必须设置
[rpcinterface:supervisor] ;这个选项是给XML_RPC用的,当然你如果想使用supervisord或者web server这个选项必须要开启的
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl] ;这个主要是针对supervisorctl的一些配置
serverurl=unix:///etc/supervisor/supervisor.sock ; 这个是supervisorctl本地连接supervisord的时候,本地UNIX socket
;自己添加的要监控的命令
[program:sersync1] ;这个就是咱们要管理的子进程了,"program:"后面的是名字sersync1,最好别乱写和实际进程
command=/soft/local/sersync/bin/sersync2 -n 4 -o /soft/local/sersync/conf/confxml.xml -r -d ; 这个就是我们的要启动进程的命令路径了,可以带参数
priority=1 ; 数字越高,启动优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 自定义错误日志大写,文件路径开启
redirect_stdout=true ; 自定义标准日志大写,文件路径开启
stdout_logfile_maxbytes=20MB ;标准日志大小
stdout_logfile=/etc/supervisor/log/sersync1.log ;标准日志存放路径
stdout_logfile_backups=10 ;标准日志保存数量,超过10个将会覆盖旧日志
stderr_logfile=/etc/supervisor/log/sersync1.err.log ;错误日志存放路径
stderr_logfile_maxbytes=20MB ;错误日志大小
stderr_logfile_backups=10 ;错误日志保存数量,超过10个将会覆盖旧日志