天天看點

supervisor 重新開機_旗魚雲梯Linux 背景程序管理利器Supervisor

旗魚雲梯Linux Supervisor程序管理器

supervisor就是用Python開發的一套通用的程序管理程式,能将一個普通的指令行程序變為背景運作程序,并監控程序狀态,異常退出時能自動重新開機。

Supervisord将通過fork/exec的方式把這些被管理的程序當作supervisor的子程序來啟動,并且在程式以外中止後,迅速自動重新啟動它們,不用再自己編寫腳本來監控程式是否正常運作,非常友善。

Supervisord可以很友善的擷取程序運作狀态,啟動、停止、重新開機一個或多個程序,對于不熟悉shell指令的使用者來說是非常友善簡單易用的工具。Supervisor已經存在了很多年了,是一個非常成熟穩定的程序管理工具。

Supervisord的安裝部署,程序的建立管理對于一般使用者來說還是有些麻煩和不易的。使用者隻想要一個在程式異常終止後自動重新開機程式的工具,或配置開機自啟程式,并不想明白配置檔案參數是什麼意思,怎麼配置等,畢竟不是搞這方面的。Supervisord的web管理工具又非常的簡陋,隻能控制并不能建立程序,還是需要手動建立配置檔案。

旗魚雲梯根據使用者的需求開發了基于supervisord管理器的web管理工具,非常友善使用,非常适合一般使用者。

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

下面我們建立一個程序來試一下

1. 建立一個python程式,每秒列印一次目前時間

a)

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

b) 這裡有個重點是,Supervisord隻能管理前台程序,也就是阻塞程序。就像test.py腳本,運作後會一直阻塞這并不會結束,每隔一秒輸出目前時間,如果沒有while True, 那麼運作後會立即結束并不會阻塞在那裡,因為已經運作結束了Supervisord管理器就無法管理它了。

2. 建立Supervisord管理程序

a)

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

b) 運作目錄就是 test.py腳本所在目錄

c) 啟動指令就是在指令行中運作test.py腳本時執行的指令,在這裡要加一個 -u參數,因為print輸出是有緩沖區的,無法立即輸出,直到緩沖區滿,-u參數表示無緩沖區,立即輸出。

3. 建立成功,可以看到程序id,運作狀态,運作時間,日志目錄,并且能重新開機,停止,删除程序等操作。

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

a) 點選檢視日志,進入日志目錄, error.log是程式運作錯誤日志,output.log是輸出日志,我們每間隔一秒輸出的目前時間就在這個日志裡

i.

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

ii.

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

4. 下面來驗證一下,程式異常終止的時候,Supervisord管理器是否能自動重新開機程序呢?

a)

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

b)

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

c)

supervisor 重新開機_旗魚雲梯Linux 背景程式管理利器Supervisor

在指令行中手動結束test.py 這個程序,可以看到程序結束成功,Supervisord管理器立即自動重新開機了test.py程式。

旗魚雲梯每分鐘檢測Supervisord管理器主程式是否啟動,如未啟動會自動啟動Supervisord管理器,并且對Supervisord管理器主程式配置了開機自啟,Supervisord啟動的時候會自動啟動它所管理程式。是以如果需要配置開機自啟程式的話,可以添加到Supervisord管理器中,即可實作程式的開機自啟功能。