Linux 採用基於執行等級 (runlevel) 的 SysVinit 架構。核心思想:定義多個執行等級,透過 /etc/inittab 設定啟動時進入的等級,以及切換等級時執行的任務。每個等級對應 /etc/rc.d/rcX.d 目錄 (X 為 0-6)。
/etc/inittab,找到 initdefault 確定預設執行等級。sysinit 動作 (通常為 /etc/rc.d/rc.sysinit),完成核心初始化 (掛載檔案系統、啟動 udev、載入模組等)。inittab 中 wait 動作,執行對應等級的 rc 腳本 (如 /etc/rc.d/rc 3)。rc 腳本進入 /etc/rc.d/rc3.d,按順序執行符號連結指向的啟動/停止腳本。respawn 類型的 getty 與顯示管理器,系統進入穩定狀態。stop。start。/etc/rc.d/init.d/ 下的真實腳本,透過不同參數 (start/stop/restart/reload/status) 控制行為。關機 (0) 與重啟 (6) 時,所有 S 開頭連結均以 stop 參數執行,邏輯是「關機/重啟只需停止服務,不需啟動新服務」。
| 參數 | 功能 |
|---|---|
start | 啟動服務 |
stop | 停止服務 |
restart | 停止後再啟動 |
reload | 重新載入設定檔 (不重啟進程) |
status | 顯示服務狀態與 PID |
init <runlevel> (如 init 3 切文字模式,init 6 重啟,init 0 關機)。reboot 等同 init 6,halt 等同 init 0。
優點:標準化程度高、自動化配置完善、適合複雜服務依賴管理。缺點:新增服務需手動管理多個目錄的符號連結與編號,調整順序時易發生「擠號」問題,臨時停用服務需逐目錄刪除連結,維護較繁瑣。