2012-07-20 102 views
1

我目前正在開發一個在linux上運行的可執行文件。我想有一個監督這個可執行文件並重新啓動的監控程序。有沒有這樣的命令?或建議我一些方法來做到這一點管理員在Linux中的可執行文件

注:該代碼是在C++

在此先感謝

回答

1

此主管已經存在並始終運行。它叫做init,大多數版本由/etc/inittab中的條目控制。

0

這樣做只是爲了自己產卵的過程,等待它退出的最簡單方法,然後重新啓動它。最簡單的方法就是在shell腳本循環中。不過,一般來說,這種看門狗架構往往會變得脆弱而且非常糟糕。你的過程爲什麼會死?重新啓動時會發生什麼?系統中是否保留了其他地方的狀態,假設您的過程的當前「版本」與以前的某個時間相同?

一般情況下,這只是沒有這樣做。幾乎總是最好的方法是將流程設計爲一次性的處理一個事件/命令/請求的流程,或者將其強制寫入,以使其可以始終處於活動狀態。如果你無法做到這一點,只需將它包裝在一個外殼循環中即可。

+0

如果看門狗的概念很糟糕,爲什麼每個Linux實例都使用它? – 2012-07-20 19:07:42

+0

實際上Linux中沒有任何東西被監視。當然,關鍵服務如httpd,mysqld等等不在典型的安裝中。核心的東西像dbus-daemon一樣。你有反例嗎? – 2012-07-20 19:13:15

+0

系統的很多小部件都不是單獨進行過程監控和自動重啓,而是整個用戶模式系統本身。在幾乎所有你喜歡命名的Linux發行版中,這是進程1的唯一功能,即每個Linux系統必須具備的一個進程。並且特別是您的終端登錄過程受到監控,並在重新啓動後立即退出。 – 2012-07-20 19:18:41

1

Monit配備了大多數Linux發行版,可以做你要找的內容,再加上相當多,如檢查內存,磁盤空間,連通性,...

docs你可以有像所以在你的監控配置文件中:

check file with path /cifs/mydata 
    if does not exist for 5 cycles then exec "/usr/bin/mount_cifs.sh" 
相關問題