supervisor就是用Python開發(fā)的一套通用的進程管理程序,能將一個普通的命令行進程變?yōu)楹笈_運行進程,并監(jiān)控進程狀態(tài),異常退出時能自動重啟。
Supervisord將通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動,并且在程序以外中止后,迅速自動重新啟動它們,不用在自己編寫腳本來監(jiān)控程序是否正常運行,非常方便。
Supervisord可以很方便的獲取進程運行狀態(tài),啟動、停止、重啟一個或多個進程,對于不熟悉shell命令的用戶來說是非常方便簡單易用的工具。Supervisor已經(jīng)存在了很多年了,是一個非常成熟穩(wěn)定的進程管理工具。
Supervisord的安裝部署,進程的創(chuàng)建管理對于一般用戶來說還是有些麻煩和不易的。用戶只想要一個在程序異常終止后自動重啟程序的工具,或配置開機自啟程序,并不想明白配置文件參數(shù)是什么意思,怎么配置等,畢竟不是搞這方面的。Supervisord的web管理工具又非常的簡陋,只能控制并不能創(chuàng)建進程,還是需要手動創(chuàng)建配置文件。
旗魚云梯根據(jù)用戶的需求開發(fā)了基于supervisord管理器的web管理工具,非常方便使用,非常適合一般用戶。

下面我們創(chuàng)建一個進程來試一下
1.創(chuàng)建一個python程序,每秒打印一次當前時間

b)這里有個重點是,Supervisord只能管理前臺進程,也就是阻塞進程。就像test.py腳本,運行后會一直阻塞這并不會結(jié)束,每隔一秒輸出當前時間,如果沒有while True, 那么運行后會立即結(jié)束并不會阻塞在那里,因為已經(jīng)運行結(jié)束了Supervisord管理器就無法管理它了。
2.創(chuàng)建Supervisord管理進程

b)運行目錄就是 test.py腳本所在目錄
c)啟動命令就是在命令行中運行test.py腳本時執(zhí)行的命令,在這里要加一個 -u參數(shù),因為print輸出是有緩沖區(qū)的,無法立即輸出,直到緩沖區(qū)滿,-u參數(shù)表示無緩沖區(qū),立即輸出。
3.創(chuàng)建成功,可以看到進程id,運行狀態(tài),運行時間,日志目錄,并且能重啟,停止,刪除進程等操作。

a)點擊查看日志,進入日志目錄, error.log是程序運行錯誤日志,output.log是輸出日志,我們每間隔一秒輸出的當前時間就在這個日志里


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