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).