使用supervisord管理python进程

时间:2022-02-14 05:07:50

使用supervisord管理python进程

1. 简单介绍:

supervisord是一个c/s系统,它允许用户在UNIX系统中监控和控制一系列进程。

supervisord与monit类似,都可以对进程进行监控

区别在于:

supervisord管理进程必须由supervisord来启动,monit可以管理正在运行的程序。Supervisord管理的进程是非daemon程序,supervisord会自动把它转成daemon程序。

 

2. 关于supervisord的安装过程省略

下载地址:

https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz#md5=aad263c4fbc070de63dd354864d5e552

 

3. 配置文件说明:

其默认的配置文件为/etc/supervisord.conf,可以通过参数-c 配置具体的配置文件。

下面对配置文件进行详细说明:

分号后面的表示注释
[unix_http_server]
file=/var/run/supervisor.sock; (the path tothe socket file)
;chmod=0700                 ; socket file mode (default0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; (default is no username (openserver))
;password=123               ; (default is no password (openserver))
 
[supervisord]
logfile=/var/log/supervisord.log ; (mainlog file;default $CWD/supervisord.log)
logfile_maxbytes=50MB     ; (max main logfile bytes b4rotation;default 50MB)
logfile_backups=10         ; (num of main logfile rotationbackups;default 10)
loglevel=info               ; (log level;default info;others: debug,warn,trace)
pidfile=/var/run/supervisord.pid;(supervisord pidfile;default supervisord.pid)
nodaemon=false               ; (start in foreground iftrue;default false)
minfds=1024               ; (min. avail startup filedescriptors;default 1024)
minprocs=200                 ; (min. avail processdescriptors;default 200)
 
[supervisorctl]
; 必须和'unix_http_server'里面的设定匹配
serverurl=unix:///var/run/supervisor.sock
; use a unix:// URL  for a unix socket
 
[rpcinterface:supervisor]
supervisor.rpcinterface_factory =supervisor.rpcinterface:make_main_rpcinterface
 
[include]
files = /etc/conf/wl_*.conf;relative/directory/*.ini
;这里include表示/etc/conf/目录下所有满足wl_*.conf的配置内容都将启动
 
; 管理的单个进程的配置,可以添加多个program
[program:nginx]
command = /home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf-p /home/nginx/
directory = /home/nginx/sbin/
process_name = %(program_name)s
numprocs = 1
stopsignal = QUIT
redirect_stderr = true
stdout_logfile=/home/log/nginx.log


5. 常用命令:

supervisord:初始启动supervisord,启动管理配置文件中设置的进程

supervisorctl的命令有:

start all->启动配置中所有的进程

stop all->停止配置中所有的进程

restart all->重启配置中所有的进程

reload->载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。

status->显示进程状态

 

6. 一般的使用方法是:

在安装好后,通过supervisord启动supervisord,通过supervisorctl启动关闭重启监控的进程。

需要注意的是除了reload外,其他(start,stop,restart)不会载入最新的配置文件。

 

7. 参考资料:

http://supervisord.org/

https://pypi.python.org/pypi/supervisor