安装Supervisor
1 2 3 4 |
# 以下三个选一个 pip install supervisor easy_install supervisor apt-get install supervisor |
生成默认配置文件
生成默认配置文件的方法如下:
1 |
echo_supervisord_conf > /etc/supervisord.conf |
配置文件常用配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
[unix_http_server] file=/data/supervisord/supervisor.sock ; (the path to the socket file) 名字可以自己改 ;chmod=0700 ; socket file mode (default 0700) ;chown=nobody:nogroup ; socket file uid:gid owner ;username=user ; (default is no username (open server)) ;password=123 ; (default is no password (open server)) [inet_http_server] ; inet (TCP) server disabled by default port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) username=username ; (default is no username (open server)) password=password ; (default is no password (open server)) [supervisord] logfile=/data/supervisord/supervisord.log ; 主日志文件。名字可以自己改 logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (log level;default info; others: debug,warn,trace) pidfile=/data/supervisord/supervisord.pid ; (supervisord pidfile;default supervisord.pid)名字同上可以自己改 nodaemon=false ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200) ;umask=022 ; (process file creation umask;default 022) ;user=chrism ; (default is current user, required if root) ;identifier=supervisor ; (supervisord identifier, default is ‘supervisor‘) ;directory=/tmp ; (default is not to cd during start) ;nocleanup=true ; (don‘t clean up tempfiles at start;default false) ;childlogdir=/tmp ; (‘AUTO‘ child log dir, default $TEMP) ;environment=KEY="value" ; (key value pairs to add to environment) ;strip_ansi=false ; (strip ansi escape codes in logs; def. false) ; the below section must remain in the config file for RPC ; (supervisorctl/web interface) to work, additional interfaces may be ; added by defining them in separate rpcinterface: sections [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///data/supervisord/supervisor.sock ; use a unix:// URL for a unix socket 名字可以自己改 ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket ;username=chris ; should be same as http_username if set ;password=123 ; should be same as http_password if set ;prompt=mysupervisor ; cmd line prompt (default “supervisor”) ;history_file=~/.sc_history ; use readline history if available ; The below sample program section shows all possible program subsection values, ; create one or more ‘real‘ program: sections to be able to control them under ; supervisor. [program:theprogramname] ; theprogramname为程序的名字,自己起 command=/bin/cat ; 启动程序要执行的命令,如:python test.py process_name=%(program_name)s ; 进程名,默认为%(program_name)s numprocs=1 ; 启动进程的数量,默认为1 directory=/tmp ; 执行上述command前需要将路径切换到的位置,可用%(here)s表示本配置文件所在的位置 ;umask=022 ; umask for process (default None) ;priority=999 ; the relative start priority (default 999) ;autostart=true ; start at supervisord start (default: true) autorestart=true ; whether/when to restart (default: unexpected) startsecs=10 ; number of secs prog must stay running (def. 1) ;startretries=3 ; max # of serial start failures (default 3) ;exitcodes=0,2 ; ‘expected‘ exit codes for process (default 0,2) stopsignal=TERM ; signal used to kill process (default TERM) ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) stopasgroup=true ; send stop signal to the UNIX process group (default false) killasgroup=true ; SIGKILL the UNIX process group (def false) ;user=chrism ; setuid to this UNIX account to run the program redirect_stderr=false ; redirect proc stderr to stdout (default false) stdout_logfile=/data/supervisord/%(program_name)s.log ; stdout log path, NONE for none; default AUTO stdout_logfile_maxbytes=100MB ; max # logfile bytes b4 rotation (default 50MB) stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) stdout_capture_maxbytes=100MB ; number of bytes in ‘capturemode‘ (default 0) ;stdout_events_enabled=false ; emit events on stdout writes (default false) stderr_logfile=/data/supervisord/%(program_name)s.err ; stderr log path, NONE for none; default AUTO stderr_logfile_maxbytes=100MB ; max # logfile bytes b4 rotation (default 50MB) stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) stderr_capture_maxbytes=100MB ; number of bytes in ‘capturemode‘ (default 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) ;[include] ;files = conf.d/*.ini |
启动Supervisor
通过如下命令使用上述配置文件启动Supervisor:
1 |
supervisord -c /etc/supervisord.conf |
管理Supervisor中的进程
通过supervisorctl可以对Supervisor启动的进程进行管理,首先使用下面的命令打开Supervisor的控制台:
1 |
supervisorctl -c /etc/supervisord.conf |
相关命令如下:
1 2 3 4 5 6 7 8 9 |
status ;查看supervisor中的进程状态 stop programxxx ;停止programxxx进程 start programxxx ;启动programxxx进程 restart programxxx ;重启programxxx进程 stop all ;停止全部进程 start all ;开始全部进程 restart all ;重启全部进程 reload ;载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程 update ;根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启 |
注:programxxx为[program:theprogramname]里配置的值。
另外,通过Web端也可以进行管理,地址及认证信息详见[inet_http_server]中的配置。
点击数:1211