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