Simple Python: How to use Supervisor

简介

Supervisor 是由python语言编写、基于linux操作系统的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。
运行环境:*nix,Python2.7

安装supervisor

1
2
3
4
$ pip install supervisor
$ python
>>> import supervisor
>>>

安装成功后Supervisor会提供一个命令行来生成配置文件:

1
$ echo_supervisord_conf > /etc/supervisord.conf

然后编辑配置文件:

1
$ vi /etc/supervisord.conf

查看配置提示:

;[program:theprogramname]      ; 冒号后为自定义的进程名,为Supervisor使用
;command=/bin/cat              ; 执行程序路径,可带参数
;process_name=%(program_name)s ; 进程名,默认为 %(program_name)s
;numprocs=1                    ; 进程数,默认 1
;directory=/tmp                ; 执行前的路径,默认为 无
;umask=022                     ; umask for process (default None)
;priority=999                  ; 执行权限,默认 999
;autostart=true                ; 在supervisord启动时启动,默认 是
;autorestart=unexpected        ; 重启的条件,默认 unexpected(意外关闭时)
;startsecs=1                   ; 等待启动的秒数,默认 1
;startretries=3                ; 最大启动失败次数,默认 3
;exitcodes=0,2                 ; 意外退出码,默认 0,2
;stopsignal=QUIT               ; 杀死进程的信号,默认 TERM
;stopwaitsecs=10               ; 杀死进程最大等待秒数,默认 10
;stopasgroup=false             ; 向UNIX进程组发送停止信号,默认 否
;killasgroup=false             ; 向UNIX进程组发送杀死信号,默认 否
;user=chrism                   ; 启动时向UNIX设置setuid
;redirect_stderr=true          ; 重定向标准错误到标准输出,默认 否
;stdout_logfile=/a/path        ; 标准输出路径, NONE 为无; 默认 AUTO
;stdout_logfile_maxbytes=1MB   ; 日志文件最大值,默认 50MB
;stdout_logfile_backups=10     ; 日志文件备份时间,默认 10
;stdout_capture_maxbytes=1MB   ; capturemode大小,默认 0
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; 标准输出路径, NONE 为无; 默认 AUTO
;stderr_logfile_maxbytes=1MB   ; 错误日志文件最大值,默认 50MB
;stderr_logfile_backups=10     ; 错误日志文件备份时间,默认 10
;stderr_capture_maxbytes=1MB   ; capturemode大小,默认 0
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A="1",B="2"       ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

;配置样例
[program:crop]
command=python /alidata/python/CropUp.py    
process_name=%(program_name)s
stdout_logfile=/alidata/python/crop.log
stderr_logfile=/alidata/python/crop.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10

开始使用

确认上面的配置无误后启动:

1
$ supervisord -c /etc/supervisord.conf

几种控制命令:

supervisorctl status crop   任务状态
supervisorctl stop crop     停止任务
supervisorctl start crop    开启任务
supervisorctl reload        重载