supervisor的簡介和使用

2021-09-29 03:58:26 字數 4251 閱讀 6534

supervisor是乙個基於python開發的c/s服務,用於linux/unix環境的乙個程序管理工具。可以很方便的監聽/啟動/停止和重啟乙個或者多個程序。當乙個程序意外被殺死或者由於異常等原因導致程式的終止,supervisor可以監聽到程序死後將其自動的重新拉起,可以很方便的做到程序自動恢復。

執行supervisor服務的時候,需要指定對應的配置檔案,若沒有顯示的指定,則會預設在以下的目錄查詢:

$cwd/supervisord.conf

$cwd/etc/supervisord.conf

/etc/supervisord.conf

/etc/supervisor/supervisord.conf (since supervisor 3.3.0)

../etc/supervisord.conf (relative to the executable)

../supervisord.conf (relative to the executable)

其中的$cwd表示執行supervisord程式的目錄。

可以通過echo_suoervisord_conf程式生成supervisor的初始化配置檔案,如下所示:

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

更詳細的配置見supervisor官方文件

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

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

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

;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 = relative/directory/*.ini ;可以指定乙個或多個以.ini結束的配置檔案程序管理的配置引數,不建議全寫在supervisord.conf檔案中,應該每乙個配置檔案放在include指定的目錄下包含近supervisord.conf檔案中。

1>建立/etc/supervisor/config.d目錄,用於存放程序管理的配置檔案。

2>修改etc/supervisor/supervisord.conf中的include引數,將/etc/supervisor/conf.d目錄新增到include中

[

include

]files =

/etc/supervisor/config.d/

*.ini

命令如下:

supervisord -c /etc/supervisor/supervisord.conf[配置檔案的路徑]
修改配置檔案之後需要執行以下操作:

supervisorctl reload
關於reload:

$ supervisorctl help reload

reload restart the remote supervisord.

實質上是重啟遠端supervisord指令碼

supervisorctl status

dfs running pid 56001, uptime 151 days, 0:26:28

引數含義:

第一列為服務名

第二列為執行狀態running為執行中,fatal表示執行失敗,starting表示正在啟動,stoped表示任務已經停止;

第三列為程序號,任務已執行天數,

supervisorctl status 服務名
引數含義同上

supervisorctl stop [服務名|all]
e.g.

supervisorctl stop all #關閉所有任務
supervisorctl start [服務名|all]
e.g.

supervisorctl start all #啟動所有任務
supervisorctl restart [服務名]

Anaconda Pycharm的簡介和使用

一 anaconda簡介 1.anaconda指的是乙個開源的python發行版本,其包含了conda python等180多個科學包及其依賴項。2.conda是乙個開源的包 環境管理器,可以用於在同乙個機器上安裝不同版本的軟體包及其依賴,並能夠在不同的環境之間切換 簡而言之,實現python不同版...

supervisor 使 celery後台執行

1.安裝 supervisor pip install supervisor 2.建立supervisor配置檔案,命令如下 進入專案檔案 echo supervisord conf supervisord.conf vim supervisord.conf 在末尾輸入 program celery...

Git,Github和Gitlab簡介和使用方法

git是乙個版本控制系統 version control system,vcs 版本控制是一種記錄乙個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。多年前,我在法國做第乙個實習時 2011年 那時候自己程式設計還在入門階段,根本沒聽過版本控制系統。那時候真是蠢 現在也沒好到 去 每次修改多...