概述

python开发的一套通用的进程管理程序Supervisor,能将一个普通的Linux命令行进程或前端运行的程序变为后台daemon,并监控进程状态,异常退出时能自动重启。

Supervisor主要由supervisord和supervisorctl组成。

运行 Supervisor 时会启动一个进程supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。

supervisorctl是Linux命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。

linux切换至后台进程(Linux进程后台运行方式)(1)

安装

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=2 user=root EOF

示例二:

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.automatic autostart=false user=root EOF

supervisor操作命令

serivce supervisor start 启动supervisor进程

supervisorctl status 查看所有进程状态

supervisorctl status logstash 查看logstash进程状态

supervisorctl update 变更或增加被管理进程配置文件后,执行后生效

supervisorctl start/stop/restart demo 启动/停止/重启被管理进程demo

,