supervisor是Linux下一個便利的啓動和監控服務的命令。html
; supervisor config file [unix_http_server] ; supervisor與supervisorctl的通信 file=/var/run/supervisor.sock ; (the path to the socket file) should match serverurl in section supervisorctl chmod=0700 ; sockef file mode (default 0700) [supervisord] ; 必須有,用來配置supervisord logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) ; 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] ; 必須有,用於配置supervisorctl serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket ; The [include] section can just contain the "files" setting. This ; setting can list multiple files (separated by whitespace or ; newlines). It can also contain wildcards. The filenames are ; interpreted as relative to this file. Included files *cannot* ; include files themselves. [include] ;引入其它配置文件 files = /path/to/*.conf # other configuration files you want to include [program:api4c] ;應用程序的配置 command=/path/to/python/env/bin/gunicorn -w 1 -b 0.0.0.0:8888 wsgi:application ; 執行你的命令,不能是用於啓動守護進程,由於supervisor就是用來做爲守護進程的 directory=/home/ubuntu/4c-entry/api4c ; chdir to here before command run startsecs=0 ; stopwaitsecs=0 ; autostart=true ; supervisord啓動的時候自動運行 autorestart=true ; 當程序中斷的時候是否重啓 stop,true,false,unexpected stdout_logfile=/path/to/logfile.log ; 必須已經存在
stderr_logfile=/path/to/std/err/log/for4c.err
命令使用實例:python
來源: http://chenxiaoyu.org/2011/05/31/python-supervisor.html web
配置項:shell
[program:hello] command=python /home/smallfish/hello.py autorstart=true stdout_logfile=/home/smallfish/hello.log 命令
shell> sudo /etc/init.d/supervisor start -- 啓動supervisor服務 shell> sudo supervisorctl status hello -- 獲取hello服務的狀態,由於是autorstart,這裏已經啓動了 hello RUNNING pid 1159, uptime 0:20:32 shell> sudo supervisorctl stop hello -- 中止hello服務 hello: stopped shell> sudo supervisorctl stop hello -- 再次中止hello,會有錯誤信息 hello: ERROR (not running) shell> sudo supervisorctl start hello -- 啓動hello服務 hello: started