Supervisor守護程序配置及使用
阿新 • • 發佈:2020-11-13
Supervisor是一個客戶端伺服器系統,包含有兩個程式:
- Supervisor的server部分稱為supervisord。主要負責管理子程序,響應客戶端的命令,log子程序的輸出,建立和處理不同的事件
- Supervisor的命令列客戶端supervisorctl。它可以與不同的supervisord程序進行通訊,獲取子程序資訊,管理子程序
安裝
yum install supervisor
常用命令
service supervisord start # 啟動服務 service supervisord restart # 重啟服務 supervisorctl reread # 重新讀取配置 supervisorctl update # 更新以便讓配置生效 supervisorctl status # 檢視所有專案的執行狀態 supervisorctl program_name start # 開始專案執行 supervisorctl program_name stop # 停止專案執行
啟動
supervisord -c /etc/supervisord.conf
配置檔案
supervisor配置檔案:/etc/supervisord.conf
注:supervisor的配置檔案預設是不全的,不過在大部分預設的情況下,上面說的基本功能已經滿足。
子程序配置檔案路徑:/etc/supervisord.d/
注:預設子程序配置檔案為ini格式,可在supervisor主配置檔案中修改。
supervisor子程序配置檔案
[program:queue] command=php /www/group/yii queue/listen numprocs=2 process_name=%(program_name)s_%(process_num)02d autostart=true autorestart=true user=root logfile=/tmp/queue.log [program:import-queue] command=php /www/group/yii import-queue/listen numprocs=2 process_name=%(program_name)s_%(process_num)02d autostart=true autorestart=true user=root logfile=/tmp/import-queue.log
配置檔案說明
;*為必須填寫項 ;*[program:應用名稱] [program:cat] ;*命令路徑,如果使用python啟動的程式應該為 python /home/test.py, ;不建議放入/home/user/, 對於非user使用者一般情況下是不能訪問 command=/bin/cat ;當numprocs為1時,process_name=%(program_name)s; 當numprocs>=2時,%(program_name)s_%(process_num)02d process_name=%(program_name)s ;程序數量 numprocs=1 ;執行目錄,若有/home/supervisor_test/test1.py ;將directory設定成/home/supervisor_test ;則command只需設定成python test1.py ;否則command必須設定成絕對執行目錄 directory=/tmp ;掩碼:--- -w- -w-, 轉換後rwx r-x w-x umask=022 ;優先順序,值越高,最後啟動,最先被關閉,預設值999 priority=999 ;如果是true,當supervisor啟動時,程式將會自動啟動 autostart=true ;*自動重啟 autorestart=true ;啟動延時執行,預設1秒 startsecs=10 ;啟動嘗試次數,預設3次 startretries=3 ;當退出碼是0,2時,執行重啟,預設值0,2 exitcodes=0,2 ;停止訊號,預設TERM ;中斷:INT(類似於Ctrl+C)(kill -INT pid),退出後會將寫檔案或日誌(推薦) ;終止:TERM(kill -TERM pid) ;掛起:HUP(kill -HUP pid),注意與Ctrl+Z/kill -stop pid不同 ;從容停止:QUIT(kill -QUIT pid) ;KILL, USR1, USR2其他見命令(kill -l),說明1 stopsignal=TERM stopwaitsecs=10 ;*以root使用者執行 user=root ;重定向 redirect_stderr=false stdout_logfile=/a/path stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/a/path stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB ;環境變數設定 environment=A="1",B="2" serverurl=AUTO