Shell

當一個守護程序死亡時執行某些東西的Shell腳本?

  • May 31, 2009

我只需要建構兩個在不同埠上執行的守護程序實例。假設它們都服務於某些應用程序的關鍵任務。

當其中一個無法服務時,如何執行一些自動任務(例如 shell 腳本)來檢查兩個守護程序?

什麼樣的腳本可以始終檢查守護程序的生命,並且如果其中一個守護程序意外停止,也許可以執行其他一些工作?

monit在這種情況下很棒 - 它在 localhost 上執行,因此您不需要網路連接來重新啟動您的守護程序(以防它失敗,或者守護程序負責網路)。它在系統上的佔用空間也很小,您可以使用它來監控您的其他守護程序/磁碟空間/等。也是。

創建一個啟動/停止腳本(類似於在/etc/init.d/系統用於正常操作的執行級別中為它創建符號連結,確保您的守護程序將在重新啟動時啟動並在正常關閉時停止。如果您的守護程序沒有 pidfile,請創建一個使用start-stop-daemon腳本。

之後,monit為您的守護程序安裝並創建配置,如下所示:

使用 pidfile /var/run/daemond.pid 檢查程序守護程序
啟動程序“/etc/init.d/daemond start”
停止程序“/etc/init.d/daemond stop”
如果在 10 個週期內 5 次埠 1234 類型 TCP 失敗,則重新啟動
如果 3 個在 5 個週期內重新啟動,則發出警報

此配置將確保如果守護程序在 tcp 埠 1234 上停止響應,或者將停止執行,它將使用 init 腳本重新啟動。monit還會通過電子郵件向您發送警報,或執行其他操作,具體取決於您的配置方式。只需查看monit(1)手冊頁。

引用自:https://serverfault.com/questions/16243