使用supervisor 管理swoft程序

2021-10-12 01:14:38 字數 2095 閱讀 8762

專案中遇到有些指令碼需要通過後台程序執行,保證不被異常中斷,之前都是通過nohup、&、screen來實現,帶著能否做乙個start/stop/restart/reload的服務啟動的想法找到裡supervisor。

關於supervisor的介紹在網上大致搜尋總結如下:

supervisor是用python開發的一套通用的程序管理程式,能將乙個普通的命令列程序變為後台daemon,並監控程序狀態,異常退出時能自動重啟。它是通過fork/exec的方式把這些被管理的程序當作supervisor的子程序來啟動,這樣只要在supervisor的配置檔案中,把要管理的程序的可執行檔案的路徑寫進去即可。也實現當子程序掛掉的時候,父程序可以準確獲取子程序掛掉的資訊的,可以選擇是否自己啟動和報警。supervisor還提供了乙個功能,可以為supervisord或者每個子程序,設定乙個非root的user,這個user就可以管理它對應的程序。

1,安裝

1:easy_install 安裝:

easy_install supervisor

2:pip 安裝:

pip install supervisor

3:debian / ubuntu可以直接通過apt安裝:

apt-get install supervisor

swoft是在cli模式下工作的,因此我們可以用supervisor來管理程序。

在這個下面配置乙個檔案,或者多個檔案

內容如下:

[program:swoft]

command=php /data/www/lch/bin/swoft start

autostart=true

autorestart=true

user=root

numprocs=1

redirect_stderr=true

stdout_logfile=/tmp/swoft.log

再比如我要在swoft裡面開啟乙個rabbitmq消費程序,那麼配置如下:

[program:consume]

;程序名稱

process_name=%(program_name)s_%(process_num)02d

; 程式的啟動目錄

directory = /data/www/lch/

; 啟動命令,可以看出與手動在命令列啟動的命令是一樣的

command = php bin/swoft consume:start  

; 在 supervisord 啟動的時候也自動啟動

autostart = true     

; 啟動 5 秒後沒有異常退出,就當作已經正常啟動了

otartsecs = 5        

; 程式異常退出後自動重啟

autorestart = true   

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

startretries = 3     

;程序數

numprocs=1

; 用哪個使用者啟動

user = root          

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

redirect_stderr = true  

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

stdout_logfile_maxbytes = 20mb  

; stdout 日誌檔案備份數

stdout_logfile_backups = 20     

stdout_logfile = /tmp/consume.log

儲存,重啟supervisor服務(sudo supervisorctl reload)

這個時候可以檢視程序執**況:

使用Supervisor管理程序

supervisor是乙個c s系統,它允許使用者在類unix系統上監控和管理一系列的程序。你可以把乙個程序以daemon的形式用supervisor來管理。使用pip來安裝supervisor root test1 pip install supervisor如果centos系統中沒用安裝pip,...

使用supervisor管理lnmp

supervisor是用python開發的乙個client server服務,是linux unix系統下的乙個程序管理工具,不支援windows系統。它可以很方便的監聽 啟動 停止 重啟乙個或多個程序。用supervisor管理的程序,當乙個程序意外被殺死,supervisort監聽到程序死後,會...

supervisor程序管理簡單使用

好久沒寫部落格了,本人喜歡私下研究和總結技術,但是並不太喜歡發表供給其他人,使用程序管理部署celery分布式爬蟲專案已經使用了很久了,今天記錄下使用過的技術。希望以後能常寫部落格。簡單介紹 supervisor是乙個程序控制系統,python語言開發,目前只支援python2.7.可以監控可控制程...