使用Python的Supervisor來管理程式

發表於2015-12-25

Supervisor可以啟動、停止、重啟*nix系統中的程式。也可以重啟崩潰的程式。

supervisord的一個守護程式,用於將指定的程式當做子程式來執行。

supervisorctl是一個客戶端程式,可以檢視日誌並通過統一的會話來控制程式。

看例子:

我們寫了一個py指令碼,用於往log檔案中記錄一條當前的時間。

安裝過程就不說了。

安裝完畢supervisor之後【將配置檔案放在/etc下】。修改配置檔案,在最後增加如下內容:

[program:ddd]

command=/home/zoer/daemon.py

autorestart=true

然後我們啟動supervisor並啟動daemon.py的執行。

從上面的例子中,看到,可以通過start或者stop命令來啟動或者停止ddd這個程式。ddd這裡就是我們在配置檔案中增加的內容(daemon.py這個指令碼)。

也可以使用restart。如下:

supervisor> restart  ddd

ddd: stopped

ddd: started

——————————————————-

下面我們測試一下,假設說我們手動kill掉了ddd這個程式,那麼ddd會自動恢復執行嗎?

為了做實驗,把程式碼修改如下:

 

通過ps可以找到這個程式的id:

看下面的操作:

刪除了log檔案,並且重新建立。然後幹掉了daemon.py的那個程式。會發現log內容又重新有新的內容了。再次ps檢視程式號。

會發現程式號已經變成9429了。說明supervisor已經重啟了被幹掉了的程式。

 

相關文章