不同於 Ubuntu 使用 upstart 作為 initialization 程式,Debain 仍舊使用傳統的 System V 風格的 init (至少目前的 Debian 7.7 Wheezy 仍是如此)。於此環境之下,若我們希望當一個行程(process)被終止之後,可以自動地重新啟動,該如何辦到?
Daemontool
daemontool 是一個工具包,包含了數個 daemon 工具(廢話):
supervise
svc (supervise control)
svscan (supervise scan)
svscanboot (supervise scan boot)
svstat (supervise status)
…etc
最主要的工具是 supervise,它會啟動特定行程並對其做監視,當該行程結束或終止時,supervise 會在自動啟動該行程。根據該作者 D. J. Bernstein 的敘述, daemontool 有以下特點與優勢:
inittab | ttys | init.d | rc.local | /service | |
---|---|---|---|---|---|
Easy service installation and removal | No | No | Yes | No | Yes |
Easy first-time service startup | No | No | No | No | Yes |
Reliable restarts | Yes | Yes | No | No | Yes |
Easy, reliable signalling | No | No | No | No | Yes |
Clean process state | Yes | Yes | No | No | Yes |
Portability | No | No | No | No | Yes |
啟動 supervise
所有需要被 supervise 監控的行程都須放在跟目錄下的 /service 目錄,假設一個要被 supervise 監看的行程為 process1,那麼就建立一個 /service/process1 之目錄,並且在 /service/process1/ 之下把放名為 run 的執行檔或是 script。接著執行
# supervise /service/process1
即可。或是當有 /service 下有很多個行程需要同時啟動時,則可以直接執行
# svcan
一次啟動所有 /service 下的所有行程。此外,執行中的行程,則可以使用 scv 傳遞信號(signal) 或是 svstat 檢查狀態等。
小結
daemontool 固然好用但已經許久未更新,另一個相同功能的選擇是 runit,或許之後也可以來研究一番。
Hi, very nice website, cheers!
——————————————————
Need cheap and reliable hosting? Our shared plans start at $10 for an year and VPS plans for $6/Mo.
——————————————————
Check here: https://www.reliable-webhosting.com/