概述
python开发的一套通用的进程管理程序Supervisor,能将一个普通的Linux命令行进程或前端运行的程序变为后台daemon,并监控进程状态,异常退出时能自动重启。
Supervisor主要由supervisord和supervisorctl组成。
运行 Supervisor 时会启动一个进程supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
supervisorctl是Linux命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。
安装
yum/apt-get install supervisor
supervisor配置文件
cat > /etc/supervisor/supervisord.conf < EOF [unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file) chmod=0700 ; sockef file mode (default 0700) [supervisord] logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket [include] files = /etc/supervisor/conf.d/*.conf EOF
supervisor子进程配置文件
配置选项:
directory ; 命令执行目录
command ; 启动命令
environment ; 命令运行环境变量, environment=A=“1”,B=“2”
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = shimeng ; 进程运行用户
loglevel=info
子进程配置文件: demo.conf,logstash.conf
示例一:
cat > /etc/supervisor/conf.d/demo.conf < EOF[program:demo]directory=/usr/local/qie_wifi/command=/usr/local/qie_wifi/py/bin/python manage.py runserver 0.0.0.0:8000 –noreload;autostart=false;autorestart=false;numprocs=1;startsecs=2;stopwaitsecs=2user=rootEOF
示例二:
cat > /etc/supervisor/conf.d/logstash.conf < EOF[program:logstash]environment=JAVA_HOME=“/usr/local/jdk/”directory=/usr/local/logstash/command=sh bin/logstash -f pipelines/test1.yml –config.reload.automaticautostart=falseuser=rootEOF
supervisor操作命令
serivce supervisor start 启动supervisor进程
supervisorctl status 查看所有进程状态
supervisorctl status logstash 查看logstash进程状态
supervisorctl update 变更或增加被管理进程配置文件后,执行后生效
supervisorctl start/stop/restart demo 启动/停止/重启被管理进程demo