Supervisor程序管理

2021-08-19 14:31:37 字數 3079 閱讀 2416

supervisor(是用python開發的乙個client/server服務,是linux/unix系統下的乙個程序管理工具,不支援windows系統。它可以很方便的監聽、啟動、停止、重啟乙個或多個程序。用supervisor管理的程序,當乙個程序意外被殺死,supervisort監聽到程序死後,會自動將它重新拉起,很方便的做到程序自動恢復的功能,不再需要自己寫shell指令碼來控制。

1. 安裝

# yum install epel-release

# yum install -y supervisor

supervisor沒有發布在標準的centos源上,需要安裝epel源。

supervisor安裝完成後在/usr/bin下生成三個執行程式:supervisortd、supervisorctl、echo_supervisord_conf,分別是supervisor的守護程序服務(用於接收程序管理命令)、客戶端(用於和守護程序通訊,傳送管理程序的指令)、生成初始配置檔案程式。

預設配置檔案:/etc/supervisord.conf

程序管理配置檔案目錄:/etc/supervisord.d

2. 配置檔案引數說明

supervisor的配置引數較多,下面介紹一下常用的引數配置,詳細的配置及說明,請參考官方文件介紹。

注:分號(;)開頭的配置表示注釋

file=/tmp/supervisor.sock ;unix socket 檔案,supervisorctl 會使用

;chmod=0700 ;socket檔案的mode,預設是0700

;chown=nobody:nogroup ;socket檔案的owner,格式:uid:gid

;[inet_http_server] ;http伺服器,提供web管理介面

;port=127.0.0.1:9001 ;web管理後台執行的ip和埠,如果開放到公網,需要注意安全性

;username=user ;登入管理後台的使用者名稱

;password=123 ;登入管理後台的密碼

[supervisord]

logfile=/tmp/supervisord.log ;日誌檔案,預設是 $cwd/supervisord.log

logfile_maxbytes=50mb ;日誌檔案大小,超出會rotate,預設 50mb,如果設成0,表示不限制大小

logfile_backups=10 ;日誌檔案保留備份數量預設10,設為0表示不備份

loglevel=info ;日誌級別,預設info,其它: debug,warn,trace

pidfile=/tmp/supervisord.pid ;pid 檔案

nodaemon=false ;是否在前台啟動,預設是false,即以 daemon 的方式啟動

minfds=1024 ;可以開啟的檔案描述符的最小值,預設 1024

minprocs=200 ;可以開啟的程序數的最小值,預設 200

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock ;通過unix socket連線supervisord,路徑與unix_http_server部分的file一致

;serverurl= ; 通過http的方式連線supervisord

; [program:xx]是被管理的程序配置引數,xx是程序的名稱

[program:xx]

command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程式啟動命令

autostart=true ; 在supervisord啟動的時候也自動啟動

startsecs=10 ; 啟動10秒後沒有異常退出,就表示程序正常啟動了,預設為1秒

autorestart=true ; 程式退出後自動重啟,可選值:[unexpected,true,false],預設為unexpected,表示程序意外殺死後才重啟

startretries=3 ; 啟動失敗自動重試次數,預設是3

user=tomcat ; 用哪個使用者啟動程序,預設是root

priority=999 ; 程序啟動優先順序,預設999,值小的優先啟動

redirect_stderr=true ; 把stderr重定向到stdout,預設false

stdout_logfile_maxbytes=20mb ; stdout 日誌檔案大小,預設50mb

stdout_logfile_backups = 20 ; stdout 日誌檔案備份數,預設是10

; stdout 日誌檔案,需要注意當指定目錄不存在時無法正常啟動,所以需要手動建立目錄(supervisord 會自動建立日誌檔案)

stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out

stopasgroup=false ;預設為false,程序被殺死時,是否向這個程序組傳送stop訊號,包括子程序

killasgroup=false ;預設為false,向程序組傳送kill訊號,包括子程序

;包含其它配置檔案

[include]

files = supervisord.d/*.ini ;可以指定乙個或多個以.ini結束的配置檔案

3. 配置管理程序

程序管理配置引數,不建議全都寫在supervisord.conf檔案中,應該每個程序寫乙個配置檔案放在include指定的目錄下。

例如:在/etc/supervisord.d下建立testenc.ini

[program:testenc]

autostart=true

autorestart=true

startsecs=5

priority=1

stopasgroup=true

killasgroup=true

然後systemctl restart supervisord重啟,然後就可以使用supervisorctl start testenc,有守護程序功能,異常退出後會自動喚起。可直接使用stop,restart等

4. 開啟inet_http_server配置後,可以通過web console進行啟動/停止/重啟操作

supervisor 管理程序

pip install supervisor 配置 etc supervisord.conf file var run supervisor.sock unix socket 檔案,supervisorctl 會使用,如果不能自動建立,可能是沒有許可權,需要手動新增 supervisord logf...

supervisor 管理程序

2019獨角獸企業重金招聘python工程師標準 說明supervisor是乙個用 python 寫的程序管理工具,可以很方便的用來啟動 重啟 關閉程序.安裝pip install supervisor配置echo supervisord conf etc supervisord.confsuper...

Supervisor管理程序

2016年04月14日 18 26 45 一 新增好配置檔案後 二 更新新的配置到supervisord vb view plain copy supervisorctl update 三 重新啟動配置中的所有程式 vb view plain copy supervisorctl reload 四 ...