Linux

如何在伺服器重啟/程序退出時自動重啟程序?

  • July 25, 2009

在我的 Ubuntu 伺服器上,我使用God來監控一些 Ruby 程序/腳本,包括一個隊列系統。

當我的一個程序存在並重新啟動它時,上帝會自動檢查。它還跟踪記憶體使用情況,並在觸發特定條件時正確執行。今天我重新啟動了伺服器,過了一會兒我注意到我的隊列不起作用。經過快速檢查,我發現在伺服器重啟後上帝沒有重啟(我想應該如此)。

確保上帝(或通用程序)在伺服器重新啟動或程序因任何原因被終止時自動重新啟動的最佳方法是什麼?

我用來啟動上帝的具體命令是

god -c config

這裡有幾個選項。如果您想要一個推薦而不是閱讀其他推薦,請跳到最後一段!

只需在重新啟動時重新啟動很容易:將其添加到/etc/rc.local預設情況下在其他啟動腳本中的所有內容之後執行的基於 Debian 的發行版(以及許多其他發行版)。如果god不進入後臺本身,您可能需要將 & 加入到命令的 ned 中,如下所示:

god -c config &

上面的過程在被殺死時不會重新啟動。你可以編寫一個無限循環的腳本,但這很麻煩,當你真的想要它被殺死時會導致問題。

您還可以創建自己的初始化腳本,以/etc/init.d( 並連結到/etc/rc.*’ 中的腳本為模型,這將為您提供更完整的解決方案,因為您可以在需要時停止/啟動服務,但這不會自動啟動服務為您服務,無需您編寫額外的腳本。

您可以將其添加到您的/etc/inittab.,然後init將為您管理該過程,在啟動時啟動它並在它死亡時重新啟動它。如果它在很短的時間內經常當機,它甚至會停止重新啟動它。這仍然不完美。

我認為您所描述的一般推薦的方法是daemontoolshttp://en.wikipedia.org/wiki/Daemontools),它還支持在服務死亡時重新啟動服務。這比使用條目要多一些工作,/etc/initab但您最終會得到一個更清潔的最終產品,它應該可以完成您在問題中提出的所有問題。daemontools應該可以在幾乎任何 Linux 發行版的儲存庫中找到。

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