runit
外觀
| 原作者 | 格里特佩普(Gerrit Pape) |
|---|---|
| 首次釋出 | 2004年2月10日[1] |
| 目前版本 | 2.3.1[2] |
| 程式語言 | C, Shell |
| 作業系統 | Linux,BSD,Mac OS X,Solaris |
| 類型 | init常駐程式 |
| 特許條款 | 新BSD特許條款 |
| 網站 | smarden |
runit是一種類Unix作業系統的init方案,可在整個作業系統執行時初始化、監視及終止行程。runit是可在Linux、Mac OS X、*BSD和Solaris作業系統上執行的、有「開創性」的daemontools的「再實現」。[3]runit可並列啟動系統服務,這樣可以加快作業系統的啟動。[4]
如System V init,runit是所有其他行程直接或間接的父行程。它是在啟動過程中第一個執行的行程,並繼續執行直至系統關閉。
設計
[編輯]runit致力於成為一個小型、模組化、可移植的代碼庫。runit分為三個階段:一次性的初始化,行程監視,及停止或重新啟動。除了第一和第三階段必須適應所執行的特定作業系統外,第二階段在所有POSIX相容的作業系統都可方便移植。[4]這三個階段可通過三個可執行檔案(通常為 Shell 指令碼)進行組態,它們分別命名為 1、2 和 3。
第二階段通常會呼叫一個名為 runsvdir 的二進制程式,該行程負責系統範圍內常駐程式的管理:對於其參數指定目錄中的每一個常駐程式,它都會建立一個獨立的監視器(watchdog);每個監視器負責啟動相應的常駐程式(以及與其關聯的紀錄檔服務,如有),並在該行程異常終止時自動將其重新啟動。當有常駐程式被添加或移除時,它會相應地啟動新的監視器或終止已有監視器。
系統通過使用具有特定名稱的可執行檔案來描述常駐程式生命周期的各個階段(如 run、check、finish 等)。它還能夠攔截傳送給常駐程式的訊號,並在對應指令碼存在時執行這些指令碼。此外,系統會建立命名管道,以提供用於控制常駐程式的介面。
參考
[編輯]- ^ Pape, Gerrit. runit-1.0.0 release. gmane.comp.sysutils.supervision.general (郵寄清單). 2004-02-10 [2013-12-10]. (原始內容存檔於2013-12-13).
- ^ Release 2.3.1. 2026年2月7日 [2026年4月25日].
- ^ Purcell, Steve. Init Scripts Considered Harmful. sanityinc.com. 2007-11-11 [12 December 2013]. (原始內容存檔於2014-02-18).
- ^ 4.0 4.1 Pape, Garret. runit - benefits. [23 April 2013]. (原始內容存檔於2014-09-23).