星期二, 11月 10, 2015

CentOS 6 指令服務化-搭配自動重啟

使用者抱怨有個常駐型的程式「經常」會自動消失,事實上是有拋出例外,只不過那在標準輸出/錯誤,又沒有重導留下紀錄,所以結果是一定要等有人覺得不對勁,去檢查才知道程式掛了,再重啟來補救。
因為底層很多元件原廠都不再支援,再維護下去也是枉然,所以老闆指示要快速「緩解」,不求根治。找了半天資料,還考慮過 Nagios,後來發現這種事在 Linux 根本是小事一椿:respawn。
這種自動復活的技巧已經發展了三代(參考資料),CentOS 6 是第二代的 Upstart。請在 /etc/init 目錄下新建一個類似 myJob.conf 的檔案,內容框架如下:
  • start on runlevel [2345]
  • stop on shutdown
  • respawn
  • exec your-command args
為了保險起見,我用 Java 寫了一個小程式,輸入參數為延遲秒數,時間到了之後就故意拋個例外出來,也終止程式。通常這種都會開個 console 來跑,但拿掉之後不就非常像上述的症狀?設成開機後自動執行不就更像了?改用上述的啟動方式,可以到 /var/log/messages 取得證明,果真是一再重覆「掛了」又「復活」的戲碼。

沒有留言:

張貼留言