Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
4.2.2. 新的 Init 系統
systemd 系統/服務管理程式置換了使用於先前 Red Hat Enterprise Linux 發行版中的 SysV init 系統。
systemd 乃開機時的第一項程序,以及關機時最後一項終止的程序。它會協調剩下的開機程序並為使用者配置系統。在 systemd 下,互相依存的程式可平行載入,大幅提升開機程序的速度。
以使用者經驗和編程 API 的角度來看,systemd 與 SysV 的相容度極高。然而有些例外狀況還是存在的。詳情請參閱〈節 4.2.2.1, “向後相容性”〉。
移至 systemd 也必須更改 Red Hat Enterprise Linux 的管理工具。詳情請參閱 systemctl man page 或是《Red Hat Enterprise Linux 7 系統管理員指南》。
欲取得更多有關於開機程序上的相關資訊,請參閱《Red Hat Enterprise Linux 7 安裝指南》。欲取得更多有關於 systemd 上的相關資訊,請參閱《Red Hat Enterprise Linux 7 系統管理員指南》。這兩本指南皆能由〈http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/〉存取。
4.2.2.1. 向後相容性
以使用者經驗和編程 API 的角度來看,systemd 設計上與 SysV 的相容度極高。然而有些例外的相容限制情況還是存在的。
- 標準的
/etc/init.d/servicename
指令(start
stop
、status
)仍然能夠使用。然而,Red Hat 建議您使用/usr/sbin/service servicename
指令,因為它們會直接轉送至systemd
,而非使用舊式的 init script。 - Run level 支援受到限制。所有的 SysV run level 皆對映至 systemd 目標;然而,並非所有 systemd 目標皆對映至 SysV run level。部分目標會檢查目前的 run level,因此將會返回
N
(不明的 run level)。Red Hat 建議避免進行 run level 檢查而移至更有幫助的 systemd 目標。 - 舊式的 run levels 2、3 和 4 就預設值全都對映至
multi-user.target
systemd 目標。使用者能藉由配置不同的 systemd 來修改此特性。 - 服務會重新執行並且不繼承引動使用者的任何 context。依賴繼承 context 的 init script 將無法使用。
- systemd 不支援在 init script 中使用
start
、stop
或status
以外的額外動詞,請將它們移至一個輔助的 script 中。 - Linux Standard Base 表頭資訊現在已能在 run time 進行時,讓 systemd 完整詮釋並使用。
- 所有 init script 作業現在在經過了 5 分鐘無反應的情況下將會逾時,以避免系統因為 init script 中止而停滯。
- systemd 僅會停用執行中的服務;未啟用的服務在關機時也不會被停用。
- chkconfig 工具僅會顯示 SysV 服務和 run level 資訊,並且可能會輸出造成誤導的資訊。Red Hat 建議使用
sysctl
指令來代替。 - SysV 服務,就算是擁有 root 權限的使用者,現在也無法再取得即時的排程了。
- 服務已不再能由 stdin 讀取了。若您希望互動式的 script,請考慮使用 systemd 所支援的最小型密碼查詢架構。欲取得更多有關於此功能的相關資訊,請參閱 man page:
$ man systemd-ask-password
- 先前版本的 Red Hat Enterprise Linux 包含了一個 System z 特屬的預安裝 script(
linuxrc.s390
),它會在開機時,啟用 System z 系統。新的 init 系統將忽略此預安裝 script,並且 System z 系統現在的開機方式與 AMD64, Intel® 64 和 Power 系統相同。