我應該如何管理 Ubuntu 上長時間運行的伺服器進程?

我應該如何管理 Ubuntu 上長時間運行的伺服器進程?

我有一個應用程式(以單一二進位檔案的形式),需要在我的一台伺服器上運行,並且我希望能夠正確控制其生命週期。我想要的是以下內容:

  • 簡單的一個命令啟動/停止/重新啟動
  • 盡可能少的配置,我不想設定像monit這樣的大東西,或是寫500行shell腳本
  • 處理日誌檔案中的 stdout/stderr/失敗
  • 管理 pidfile 的方式是,如果進程正在運行,則只有 pid 檔案(這似乎很難透過正確使用 shell 腳本手動完成)
  • (選修的)如果二進位檔案崩潰,能夠做一些事情
  • (選修的)如果伺服器重新啟動和/或應用程式崩潰,則自動啟動

我正在尋找一種輕量級的解決方案,可以理想地與 Ubuntu Server 一起使用,開箱即用,無需太多配置。

答案1

對於Ubuntu,我認為暴發戶就是您正在尋找的。

https://askubuntu.com/questions/19320/how-to-enable-or-disable-services 這個 AskUbuntu 問題提供了有關如何開始您正在做的事情的精彩資訊。

簡而言之,將以下內容複製到 /etc/init/mybinary.conf。

description "My Binary"
author      "Jakub Arnold <[email protected]>"

start on (local-filesystems and net-device-up)
stop on runlevel [!2345]

respawn

pre-start script
   RUN_MODE="daemons"

end script

exec mybinary

這應該可以幫助您進行以下操作:

  • 使用「service mybinary start/stop/status」進行服務管理
  • PID檔案管理
  • 崩潰時重生
  • 開機運作
  • 記錄在 /var/log/upstart/mybinary.log 下

Upstart 食譜包含您需要的所有資訊:http://upstart.ubuntu.com/cookbook/

順便說一句,我覺得我應該提到 Ubuntu 正計劃淘汰 Upstart,轉而使用 Systemd,但沒有製定任何路線圖。

相關內容