systemd 是 Enterprise Linux 第 7 版開始正式引進使用,有許多較以往不同的特點,下表整理了傳統 init 與 systemd 的主要差異:
| 功能/特性 | systemd | init | 
|---|---|---|
| 啟動速度 | 使用平行處理,啟動速度更快 | 依順序啟動,可能較慢 | 
| 服務相依性管理 | 自動處理服務相依性 | 需要手動設定 Script 以管理相依問題 | 
| 日誌系統 | 內建 journald, 提供日誌功能 | 依賴於獨立的 syslog服務 | 
| 設定與管理 | 使用 systemctl和 Unit 檔,更易於管理 | 使用不同層級的 init 指令稿 (Script) | 
| 擴展性 | 可以自定義 Unit 檔 | 通常需要修改或增加 Script | 
我們可以從表上看到幾個明顯的差異,尤其是系統開機的程序改善了以往依順序啟動服務的流程,這減低了系統開機時間,同時也可以充份利用現代多 CPU 核心的資源。
下圖展示了部份 systemd 開機時間軸表現:
| systemd 啟動時間軸 | 
|---|
|  | 
對於系統管理員來說,systemd 的主要特性與影響情境如下整理:
平行啟動systemd 利用平行處理來快速啟動服務。例如,若有一個 Web 服務和一個資料庫服務,而 Web 服務依賴於資料庫,則 systemd 會首先啟動數據庫服務,並且在資料庫服務成功啟動後再啟動 Web 服務,而不會等待其他不相關的服務。
相依性管理
在維護過程中,我們經常需要停止或啟動某些依賴於其他服務的服務。使用 systemd 的單位檔,我們可以清晰的定義這些相依關係,使管理更為簡單。比如,當我們需要進行資料庫升級時,可以方便地停止相依於它的所有其他服務,進行升級,然後再啟動所有相關服務。
內建日誌系統journald 是 systemd 的一部分,它不僅收集核心日誌,還收集用戶空間的日誌,這對於故障排除非常有用。假如一個服務無法啟動,使用 journalctl 可以迅速找出失敗的原因。
設定和管理方便
在 systemd 中,管理服務只需要簡單的 systemctl 指令。比如,要停止一個名為 httpd 的 Web 服務,你只需執行 systemctl stop httpd。這遠比編輯 init 腳本來得直接和簡單。在配置新服務時,只需要添加或修改單位檔,然後重新載入設定即可。
從以上的幾個重點項目來看,systemd 提供了一個更現代、更高效的方法來管理 Linux 服務和資源,對於系統管理員來說,掌握 systemd 會使工作更為便捷。