萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

SysVinit 啟動機制深度解析:執行等級、rc 腳本與符號連結管理

SysVinit 啟動方式核心概念

Linux 採用基於執行等級 (runlevel) 的 SysVinit 架構。核心思想:定義多個執行等級,透過 /etc/inittab 設定啟動時進入的等級,以及切換等級時執行的任務。每個等級對應 /etc/rc.d/rcX.d 目錄 (X 為 0-6)。

啟動流程核心步驟

  1. 核心啟動後啟動 init (PID 1)。
  2. init 讀取 /etc/inittab,找到 initdefault 確定預設執行等級。
  3. 執行 sysinit 動作 (通常為 /etc/rc.d/rc.sysinit),完成核心初始化 (掛載檔案系統、啟動 udev、載入模組等)。
  4. 依 inittab 中 wait 動作,執行對應等級的 rc 腳本 (如 /etc/rc.d/rc 3)。
  5. rc 腳本進入 /etc/rc.d/rc3.d,按順序執行符號連結指向的啟動/停止腳本。
  6. 完成後啟動 respawn 類型的 getty 與顯示管理器,系統進入穩定狀態。

rcX.d 目錄與符號連結命名規則

  • K 開頭:Kill (停止服務),參數 stop。
  • S 開頭:Start (啟動服務),參數 start。
  • 兩位數字:執行順序 (00 最早,99 最晚)。
  • 所有連結指向 /etc/rc.d/init.d/ 下的真實腳本,透過不同參數 (start/stop/restart/reload/status) 控制行為。

特殊目錄:rc0.d 與 rc6.d

關機 (0) 與重啟 (6) 時,所有 S 開頭連結均以 stop 參數執行,邏輯是「關機/重啟只需停止服務,不需啟動新服務」。

服務腳本標準參數

參數功能
start啟動服務
stop停止服務
restart停止後再啟動
reload重新載入設定檔 (不重啟進程)
status顯示服務狀態與 PID

切換執行等級指令

init <runlevel> (如 init 3 切文字模式,init 6 重啟,init 0 關機)。reboot 等同 init 6,halt 等同 init 0。

優缺點總結

優點:標準化程度高、自動化配置完善、適合複雜服務依賴管理。缺點:新增服務需手動管理多個目錄的符號連結與編號,調整順序時易發生「擠號」問題,臨時停用服務需逐目錄刪除連結,維護較繁瑣。

copyright © 萬盛學電腦網 all rights reserved