supervisor是一个python编写的进程管理工具, 能够方便的管理和监控进程. supervisor分为服务端supervisord和客户端supervisorctl.python
supervisor由python编写, 能够使用pip安装:shell
pip install supervisor
也能够使用apt-get来安装:服务器
apt-get install supervisor
在/etc/supervisor
目录下能够看到supervisord的主要配置文件supervisord.conf
:socket
; supervisor config file [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
为了便于管理, 咱们将须要监控的进程写入/etc/supervisor/conf.d/*.conf
中, 这些配置文件将被导入主配置文件.工具
新建一个blog.conf文件:url
[program:blog] directory=/home/www/Blog command=uwsgi --ini wsgi.ini user=www autostart=true autorestart=true stdout_logfile=/home/www/Blog/log/supervisor.log
在启动blog子进程时supervisord会以user的身份在directory目录下执行command命令以启动子进程. 通常状况下, 每一个program配置都要设置这三项.unix
autostart=true
表示在supervisord启动时该子进程会自动启动. 在服务器重启后只须要重启supervisord, 再也不须要一个一个地启动进程.rest
autoresatrt=trus
表示若该子进程崩溃, supervisor会自动重启该进程.code
supervisorctrl客户端能够查看子进程的状态并进行控制:server
supervisorctl status
查看各子进程运行状态
supervisorctl start <program>
根据program配置启动相应的子进程
supervisorctl stop <program>
中止子进程
supervisorctl restart <program>
重启子进程
supervisorctl reread
从新读入配置文件, 但不会增长新的程序
supervisorctl update
根据新读入配置文件, 更新程序配置
须要注意的一点是supervisor更新配置文件比较麻烦, 更新原有程序的配置须要reread - update - restart
三个操做, 而添加新程序也须要reread - update - start
.