使用supervisord管理python进程
1. 简单介绍:
supervisord是一个c/s系统,它允许用户在UNIX系统中监控和控制一系列进程。
supervisord与monit类似,都可以对进程进行监控
区别在于:
supervisord管理进程必须由supervisord来启动,monit可以管理正在运行的程序。Supervisord管理的进程是非daemon程序,supervisord会自动把它转成daemon程序。
2. 关于supervisord的安装过程省略
下载地址:
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. 参考资料:
https://pypi.python.org/pypi/supervisor