SysVinit 運行級別 (傳統)
| 級別 | 名稱 | 描述 | 典型用途 |
| 0 | halt | 關機 | 系統關閉,切斷電源 |
| 1 / s / S | single-user | 單用戶模式 | 維護、修復、重置密碼 |
| 2 | multi-user (no net) | 多用戶無網絡 | 極少用,特定嵌入式場景 |
| 3 | multi-user | 多用戶命令行 | **服務器標準運行級別** |
| 4 | unused | 保留/自定義 | 用戶自定義 |
| 5 | graphical | 圖形界面 | **桌面標準運行級別** |
| 6 | reboot | 重啟 | 系統重啟 |
systemd 目標單元對照
| 運行級別 | systemd 目標 | 說明 |
| 0 | poweroff.target | 關機 |
| 1 | rescue.target | 救援模式 |
| 2 | multi-user.target | 兼容級別 2 |
| 3 | multi-user.target | 命令行多用戶 |
| 4 | multi-user.target | 兼容級別 4 |
| 5 | graphical.target | 圖形界面 |
| 6 | reboot.target | 重啟 |
| - | emergency.target | 緊急模式(比 rescue 更極少) |
查看與切換
SysVinit 命令
# 查看當前運行級
runlevel
who -r
# 切換
init 3
init 5
telinit 0
systemd 命令 (現代標準)
# 查看當前目標
systemctl get-default
systemctl list-units --type=target --state=active
# 切換 (臨時)
systemctl isolate multi-user.target
systemctl isolate graphical.target
systemctl isolate rescue.target
# 設定預設 (永久)
systemctl set-default multi-user.target
systemctl set-default graphical.target
# 緊急/救援模式 (啟動時)
# GRUB 編輯內核行加:
systemd.unit=rescue.target
systemd.unit=emergency.target
關鍵區別
- 運行級別是互斥的:同一時刻只能處於一個級別
- systemd 目標可並行:multi-user.target 和 graphical.target 可同時活躍
- 依賴關系更豐富:目標間有 Wants/Requires/Conflicts,非線性
- 向後兼容:
runlevel、init 3 仍可用,實際轉發給 systemd
自定義運行級別/目標
# SysVinit: /etc/inittab
# id:3:initdefault:
# systemd: 建立自定義 target
# /etc/systemd/system/custom.target
[Unit]
Description=Custom Multi-User No Network
Requires=multi-user.target
Conflicts=network-online.target
After=multi-user.target
# 使用
systemctl isolate custom.target
實用場景
| 場景 | 命令 |
| 服務器無圖形,節省資源 | systemctl set-default multi-user.target |
| 桌面暫時切命令行排查 | systemctl isolate multi-user.target |
| 忘記 root 密碼進單用戶 | GRUB 加 systemd.unit=rescue.target |
| 文件系統損壞進緊急模式 | GRUB 加 systemd.unit=emergency.target |
| 關機 | systemctl poweroff / shutdown -h now |
| 重啟 | systemctl reboot / shutdown -r now |
總結
現代 Linux (systemd) 以 **Target** 替代 **Runlevel**,功能更強、依賴更清晰。運維人員需掌握:
systemctl get-default / set-default 管理預設啟動模式
systemctl isolate 臨時切換
- GRUB 參數
systemd.unit=rescue/emergency.target 進入維護模式
- 傳統
runlevel、init N 仍兼容但屬legacy