supervisor process management

supervisor是unix like系统的进程管理工具

安装:

pip install supervisor

配置文件:

echo_supervisord_conf # 打印一个配置文件样例
echo_supervisord_conf > /etc/supervisord.conf  # 在/etc目录生成配置文件

编辑配置文件supervisord.conf,取消include部分注释,修改files配置项指向的路径

[include]
files = /etc/supervisor/*.conf  # /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf  # 使用这个部分可以将不同的配置文件拆分

创建单独的程序配置文件:

mkdir /etc/supervisor  # 建立另一个文件夹,用于放置配置文件
cd /etc/supervisor
touch test.conf

在test.conf写入下面的配置信息,可以在一个文件配置多个程序,也可以将多个程序分在不同文件:

[program:test]
; 程序文件的目录 directory
=/home/think/
; 运行程序的命令 command=python test.py user=think # 用户名
;下面部分先不用管 autostart
=true autorestart=true redirect_stderr=true stopsignal=TERM stopasgroup=true

[program:celery_producer_consumer_res]
directory=/home/buxizhizhoum/1-Work/2-Codes/celery/producer_consumer
command=python producer_consumer.py -app %(process_num)s
numprocs=1
numprocs_start=10
process_name=%(program_name)s_%(process_num)s
autorestart=true
startsecs=3
startretries=3
stdout_logfile=/tmp/%(program_name)s_%(process_num)s.log
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=1

在上面配置文件的directory项指定的目录,新建test.py文件,写入要运行的程序,此处写入的示例程序为:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import datetime
import time
import sys


while True:
    print >>sys.stdout, datetime.datetime.now()  # 只使用print不会在后续使用supervisorctl tail命令时显示程序输出
    sys.stdout.flush()
    time.sleep(1)

启动:

supervisord

or

supervisord -c /filename/of/your/config/file.conf

这时如果配置正确,配置文件中配置的进程应该已经启动

查看:

supervisorctl status

log在/tmp/supervisord.log

其它:

supervisorctl stop <program name>  # stop program
supervisorctl start <program name>
supervisorctl reload <program name>  # 重新加载配置
supervisorctl tail <program name>  # 获取程序输出,print的输出不会被获取,只输出sys.stdout, sys.stderr

管理一组程序:

[group:celery_task_summary]
;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
programs=celery_tasks  ; each refers to 'x' in [program:x] definitions
;priority=999  
supervisorctl update
supervisorctl restart celery_task_summary:   # 重启程序组
supervisorctl restart celery_task_summary:celery_tasks  # 重启程序组里面的一个, 添加程序组后 supervisorctl restart celery_tasks 已经不能使用

网页监控:

在之前的配置文件中下面两行的注释取消:

[inet_http_server]
port=127.0.0.1:9001

使用浏览器访问 http://127.0.0.1:9001

原文地址:https://www.cnblogs.com/buxizhizhoum/p/8933754.html