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年 那時候自己程式設計還在入門階段,根本沒聽過版本控制系統。那時候真是蠢 現在也沒好到 去 每次修改多...