Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux init 進程與運行級別深度解析

編輯:Linux 教學

init 進程本質

  • 內核啟動完成後啟動的第一個用戶態進程 (PID=1)。
  • 掛載點:/sbin/init (若不存在嘗試 /bin/sh,失敗則內核 panic)。
  • 祖先進程:所有用戶進程的直接或間接父進程,負責收養孤兒進程。

運行級別

級別名稱描述
0停機關機,**不可**設為 initdefault
1單用戶維護模式,僅 root,最少服務,掛載最少文件系統
2多用戶無 NFS多用戶,無網絡文件系統
3完全多用戶標準運行級,文本界面
4保留未使用,可自定義
5圖形界面X11 (xdm/gdm/kdm)
6重啟重啟,**不可**設為 initdefault

/etc/inittab 核心格式

id:runlevels:action:process
  • id:唯一標識 (1-4 字符)。
  • runlevels:生效的運行級別集合 (如 123、2345)。
  • action:關鍵字決定 init 如何處理 process。
  • process:執行的命令/腳本。

常見 action

action行為
initdefault指定默認運行級別 (無 process)
sysinit系統啟動早期執行 (如掛載、清理 /tmp)
wait進入指定級別時執行一次,等待結束
once進入級別執行一次,不等待
respawn進程終止自動重啟 (如 getty、sshd)
ctrlaltdel捕獲 Ctrl+Alt+Del 執行 (通常重啟)
powerfail/powerwaitUPS 電源故障處理

範例片段

id:3:initdefault:               # 默認運行級 3
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l3:3:wait:/etc/rc.d/rc 3
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2

SysV 啟動腳本機制

  • 腳本存放:/etc/init.d/ 或 /etc/rc.d/init.d/
  • 各級別目錄:/etc/rc.d/rc[0-6].d/ (符號鏈接)
  • 鏈接命名:Sname (啟動)、Kname (停止),NN 為優先級。
  • 切換級別時,init 調用 /etc/rc.d/rc $runlevel,按順序執行 K* 停止舊服務、S* 啟動新服務。

單用戶模式實戰

場景:忘記 root 密碼

  1. GRUB/LILO 引導菜單編輯內核參數:init=/bin/sh 或 single / 1 / emergency。
  2. 進入單用戶,掛載根分區可寫:mount -o remount,rw /。
  3. 執行 passwd 修改密碼。
  4. 重啟進入正常級別。

telinit 動態切換

telinit 3   # 切換到運行級 3
telinit 5   # 啟動圖形界面
telinit 6   # 重啟
telinit q   # 重讀 inittab

systemd 時代備註

現代發行版 (RHEL7+, Ubuntu 15.04+) 已遷移至 systemd,運行級別映射為 target (如 multi-user.target ≡ 3,graphical.target ≡ 5)。/etc/inittab 不再使用,但理解 SysV 概念有助於兼容舊腳本與排查遺留問題。

Copyright © Windows教程網 All Rights Reserved