(轉自https://www.izixia.cn/2016/01/03/supervisor-pei-zhi-guo-cheng/)python
1.安裝 pip install supervisor
安裝後測試是否成功echo_supervisord_conf
nginx
2.創建配置文件
建立目錄sql
mkdir -m 755 -p /etc/supervisor/
swift
mkdir -m 755 conf.d
ruby
echo_supervisord_conf > /etc/supervisor/supervisord.conf
app
在conf.d 文件夾中建立配置文件如app.inipython2.7
[program:pmapp] command=python3 /home/keith/temp/app.py autorestart=true stdout_logfile=/home/keith/temp/supervisord_stdout.log stderr_logfile=/home/keith/temp/supervisord_stderr.log [supervisord]
app.py的內容以下,功能是一個每五秒在寫入一條記錄: socket
import time def log(): while True: with open('a.txt','a') as f: s = 'log:%s \n'%time.strftime('%H:%M:%S') f.write(s) print(s) time.sleep(5) log()
3.添加配置文件到主配置文件post
打開/etc/supervisor/supervisord.conf 文件,到最後一行能夠看到測試
;[include] ;files = /relative/dictory/*.ini
刪除這裏的分號,而後添加咱們配置文件/etc/supervisor/conf.d/app.ini
,修改後以下
[include] files = /etc/supervisor/conf.d/*.ini /etc/supervisor/example.ini
多個路徑用空格隔開就能夠了
4.啓動supervisor
supervisor
有兩個命令,supervisord
和supervisorctl
,經過supervisord
管理啓動和配置supervisor自己,經過supervisorctl
來管理使用supervisor啓動和管理的自身的一些應用,如咱們的這裏的app.py
supervisord -c /etc/supervisor/supervisord.conf
supervisorctl shutdown
若是先建的app.ini(控制文件),在使用啓動命令後這些通過配置的程序也會啓動
supervisorctl start program_name
這裏的program的name是配置文件ini中的[program:name],因此這裏的program_name是pmapp
supervisorctl stop program_name
supervisorctl reload
ps -efH|grep supervisor
這裏提醒一下若是按以上操做出現如下error:
Error: .ini file does not include supervisorctl section
For help, use /usr/local/bin/supervisorctl -h
或者
error: <class 'socket.error'>, [Errno 101] Network is unreachable: file: /usr/lib/python2.7/socket.py line: 571
切換到/etc/supervisor目錄執行以上的命令
執行supervisorctl start APP_NAME
或者執行 supervisorctl
的相關命令,若是出現
unix:///tmp/supervisor.sock no such file
說明 Supervisord
服務尚未啓動,檢查你的 supervisord.conf
文件最後的註釋 ;
取消,files
路徑沒有問題
[include] files = ./conf.d/*.ini
以後在目錄 /etc/supervisor
下從新運行
supervisord -c /etc/supervisor/supervisord.conf
最後附上 supervisord
服務運行命令
從新 read
配置文件: supervisorctl reread
重啓服務: supervisorctl reload
關閉服務: supervisorctl shutdown