現(xiàn)代Linux的五大初始化系統(tǒng)(1992-2015)
在 Linux 和其他類 Uniux 系統(tǒng)中,init(初始化)進程是系統(tǒng)啟動時由內(nèi)核執(zhí)行的***個進程,其進程 ID(PID)為 1,并靜默運行在后臺,直到系統(tǒng)關閉。
init 進程負責啟動其他所有的進程,比如守護進程、服務和其他后臺進程,因此,它是系統(tǒng)中其它所有進程之母(偏偏叫做“父進程”)。某個進程可以啟動許多個子進程,但在這個過程中,某個子進程的父進程結束之后,該子進程的父進程會變成 init 進程。
這么多年過去了,許多的初始化系統(tǒng)在主流 Linux 脫穎而出,和本文中,我將你來看看在 Linux 操作系統(tǒng)***的初始化系統(tǒng)。
1. System V Init
System V (SysV) 是一個在類Unix系統(tǒng)中最為成熟而且大受歡迎的初始化方案,是 Unix/Linux 系統(tǒng)中所有進程的父進程。SysV是***個商業(yè) Unix 系統(tǒng)設計的初始化方案。
除了Gentoo使用自主的初始化系統(tǒng)、Slackware使用 BSD 風格的初始化方案外,幾乎所有的 Linux 發(fā)行版都率先使用 SysV作為初始化方案。
隨著時間的推移,由于一些設計上的缺陷,有幾個 SysV初始化替換方案已經(jīng)開發(fā)出來,用以為 Linux 創(chuàng)建更加高效和***的初始化系統(tǒng)。
盡管這些替代方案都超越了 SysV 并提供了更多新特性,但它們?nèi)匀缓驮?SysV 初始化腳本保持兼容。
2. SystemD
SystemD 是一個 Linux 平臺中相對較新的初始化方案。它由 Fedora 15 引入,集成了各類工具以便更好的管理系統(tǒng)。主要目的是:系統(tǒng)初始化、管理和跟蹤引導進程中和系統(tǒng)運行時所有的系統(tǒng)進程。
Systemd 全面有別于其他傳統(tǒng)的 Unix 初始化系統(tǒng),特別是在啟動系統(tǒng)和服務管理方面。它同樣兼容 SysV 和 LBS 初始化腳本。
其中較為突出的特性如下:
- 純粹、簡單、高效的設計
- 啟動時的并發(fā)和并行處理
- 更好的 API
- 開啟可選進程的移除功能
- 使用 journald 來支持事件日志
- 使用 systemd calender timers 來支持任務計劃
- 以二進制文件存儲日志
- 保存 systemd 的狀態(tài)以待今后查看
- 與 GNOME 更好整合實現(xiàn)等
查看 Systemd 初始化系統(tǒng)簡介:https://fedoraproject.org/wiki/Systemd
3. Upstart
Upstart 是一個基于事件的初始化系統(tǒng),由 Ubuntu 的制作團隊開發(fā)的,用以替代 SysV。它可以啟動不同的系統(tǒng)任務和進程、在系統(tǒng)運行時校驗進程并在系統(tǒng)關閉時結束進程。
它是一個使用 SysV 和 Systemd 啟動腳本的混合初始化系統(tǒng),Upstart 中值得一提的特性如下:
- Ubuntu 的原生初始化系統(tǒng),但可以運行在其他所有的發(fā)行版中
- 基于事件啟動/結束的任務和服務
- 啟動/結束任務和服務時生成事件
- 可以由其他系統(tǒng)進程發(fā)送事件
- 使用 D-Bus 和 init 進程通信
- 用戶可以啟動/結束其各自的進程
- 可以再現(xiàn)崩潰的進程等
訪問 Upstart 主頁:http://upstart.ubuntu.com/index.html
4. OpenRC
OpenRC 是一個基于依賴關系的類 Unix 系統(tǒng)初始化方案,兼容 SysV?;究梢哉f是 SysV 的升級版,但必須要清楚記住的是:OpenRC 并非只是完全替代 /sbin/init 文件。
它所提供的出色特性如下:
- 可運行在包括 Gentoo 和 BSD 在內(nèi)的多數(shù) Linux 系統(tǒng)之中
- 支持硬件觸發(fā)的初始化腳本
- 支持單個配置文件
- 不支持單個服務配置文件
- 以守護進程的方式運行
- 并行服務啟動等
訪問 OpenRC 主頁:https://wiki.gentoo.org/wiki/OpenRC
5. runit
runit 同樣是一個跨平臺初始化系統(tǒng),可以運行在 GNU/Linux、Solaris、BSD 和 Mac OS X 中,用替代 SysV,同時提供服務監(jiān)控。
相比于 SysV 和其他 Linux 初始化系統(tǒng),它提供了一些好用和卓越的組件,如下:
- 服務監(jiān)控:每個服務都關聯(lián)一個服務目錄
- 清理進程狀態(tài),以保證每個進程處于干凈狀態(tài)
- 可靠的日志機制
- 快速的系統(tǒng)啟動和關閉
- 可移植
- 打包方便
- 代碼體積小等
訪問 runit 主頁:http://smarden.org/runit/
正如我之前所說的,Linux 中的初始化系統(tǒng)負責啟動和管理所有的進程。此外,SysV 是 Linux 系統(tǒng)中主要的初始化系統(tǒng),但由于一些性能缺陷,系統(tǒng)開發(fā)者已經(jīng)開發(fā)出幾個替代品。
在這里,我已經(jīng)介紹了幾個可用的替代方案,但你可能覺得有一些其他的初始化系統(tǒng)值得在此提及。請在下方的評論區(qū)將你的想法告訴我們。