我有一個應用程式(以單一二進位檔案的形式),需要在我的一台伺服器上運行,並且我希望能夠正確控制其生命週期。我想要的是以下內容:
- 簡單的一個命令啟動/停止/重新啟動
- 盡可能少的配置,我不想設定像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,但沒有製定任何路線圖。