Linux

我應該如何在 Ubuntu 上管理一個長時間執行的伺服器程序?

  • March 1, 2015

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

  • 簡單的一個命令啟動/停止/重啟
  • 盡可能少的配置,我不想設置像monit這樣的大東西,或者寫500行shell腳本
  • 處理日誌文件中的 stdout/stderr/failures
  • 如果程序正在執行,則以只有一個 pid 文件的方式管理 pidfile(這似乎很難正確使用 shell 腳本手動完成)
  • *(可選)*在二進製文件崩潰時能夠做些什麼
  • *(可選)*在伺服器重新啟動和/或應用程序崩潰時自動啟動

我正在尋找的是一個輕量級的解決方案,它非常適合開箱即用的 Ubuntu Server,無需太多配置。

對於 Ubuntu,我認為Upstart是您正在尋找的。

https://askubuntu.com/questions/19320/how-to-enable-or-disable-services 這個 AskUbuntu 問題提供了有關您正在做的事情入門的極好資訊。

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

description "My Binary"
author      "Jakub Arnold <Jakub.Arnold@example.com>"

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,但沒有製定路線圖。

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