使用 supervisor 管理进程
http://www.cnblogs.com/smail-bao/p/5673434.html
http://ju.outofmemory.cn/entry/201847
http://cpper.info/2016/04/14/supervisor-usage.html
http://xitongjiagoushi.blog.51cto.com/9975742/1710321
http://liyangliang.me/posts/2015/06/using-supervisor/
这个可是一个好东西,以后再也不用 nohup XXXX & 了。有了它,妈妈再也不用担心我的学习了
我这里用[root@git logs]# easy_install supervisor的方式安装,之前我也试过用pip的方式安装,但是我装好之后,创建配置文件的时候报错了,
一直也没有找到原因,希望哪位朋友看到的时候帮忙和我说一下,谢谢
或者是源码安装
wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz --no-check-certificat
tar zxf supervisor-3.1.3.tar.gz
cd supervisor-3.1.3
python setup.py install
/usr/local/bin/echo_supervisord_conf >> /etc/supervisord.conf
装好之后
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
我们现在多虑一下看看里面有哪些有效内容
[root@zabbix ansible]# cat supervisord.conf | grep -v "^;" | grep -v "^$"
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
[supervisord]
user=root
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
#serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
###为了不将所有新增配置信息全写在一个配置文件里,这里新建一个文件夹,每个程序设置一个配置文件,相互隔离 mkdir /etc/supervisord.d/ ### 修改配置文件 vim /etc/supervisord.conf ### 加入以下配置信息 [include] files = /etc/supervisord.d/*.conf ### 在supervisord.conf中设置通过web可以查看管理的进程,加入以下代码(默认即有,取消注释即可) [inet_http_server] port=9001 username=user password=123
然后我们这里就可以使用http://IP:9001来登陆管理界面
这里我们可以选择使用脚本来启动,停止supervisor
启动脚本为
- wget https://github.com/Supervisor/initscripts/raw/master/redhat-init-mingalevme
[root@zabbix ~]# cat /etc/init.d/supervisor
#!/bin/bash
#
# supervisord This scripts turns supervisord on
#
# Author: Mike McGrath <mmcgrath@redhat.com> (based off yumupdatesd)
# Jason Koppe <jkoppe@indeed.com> adjusted to read sysconfig,
# use supervisord tools to start/stop, conditionally wait
# for child processes to shutdown, and startup later
# Mikhail Mingalev <mingalevme@gmail.com> Merged
# redhat-init-jkoppe and redhat-sysconfig-jkoppe, and
# made the script "simple customizable".
# Brendan Maguire <maguire.brendan@gmail.com> Added OPTIONS to
# SUPERVISORCTL status call
#
# chkconfig: 345 83 04
#
# description: supervisor is a process control utility. It has a web based
# xmlrpc interface as well as a few other nifty features.
# Script was originally written by Jason Koppe <jkoppe@indeed.com>.
#
# source function library
. /etc/rc.d/init.d/functions
set -a
PREFIX=/usr/local
SUPERVISORD=$PREFIX/bin/supervisord
SUPERVISORCTL=$PREFIX/bin/supervisorctl
PIDFILE=/var/run/supervisord.pid
LOCKFILE=/var/lock/subsys/supervisord
OPTIONS="-c /etc/supervisord.conf"
# unset this variable if you don't care to wait for child processes to shutdown before removing the $LOCKFILE-lock
WAIT_FOR_SUBPROCESSES=yes
# remove this if you manage number of open files in some other fashion
ulimit -n 96000
RETVAL=0
running_pid()
{
# Check if a given process pid's cmdline matches a given name
pid=$1
name=$2
[ -z "$pid" ] && return 1
[ ! -d /proc/$pid ] && return 1
(cat /proc/$pid/cmdline | tr "