如何檢查 Linux 中的運行級別
本簡要指南解釋了什麼是執行級別、Linux 中有多少個執行級別,以及如何在 Linux 操作系統中檢查執行級別。
什麼是運行級別?
一個運行級別是 Unix 為基礎的作業系統運行的模式之一。換句話說,運行級別是 init 和整個系統的狀態,它定義了哪些系統服務正在運行。
在 Linux 核心中,存在 7 個執行級別,從 0 到 6。系統一次只能啟動到一個執行級別。
預設情況下,系統會啟動至運行級別 3 或運行級別 5。運行級別 3 是命令列介面 (CLI),而 5 是圖形使用者介面 (GUI)。大多數 Linux 作業系統的預設運行級別是在 /etc/inittab 文件中指定的。
使用運行級別,我們可以輕鬆地找出 X 是否正在運行,或者網路是否正常運作,等等。
1. 在 Linux(SysV init)中檢查運行級別
這裡是使用 SysV init 作為預設服務管理器的 Linux 發行版中的運行級別列表。
- 0 - 停止
- 1 - 單用戶文字模式
- 2 - 未使用(使用者可定義)
- 3 - 完整多用戶文字模式
- 4 - 未使用(使用者可定義)
- 5 - 完整多用戶圖形模式(含基於X的登錄畫面)
- 6 - 重新啟動
現在,讓我們來看看如何查找運行級別。
要查詢系統運行等級,請打開終端機並執行以下命令:
$ runlevel範例輸出:
N 3在上述輸出中,字母 'N' 表示自系統啟動以來運行級別未被更改。而 3 是當前的運行級別,即系統處於命令行介面(CLI)模式。
在較新的 init 版本中,你可以使用名為 RUNLEVEL 和 PREVLEVEL 的環境變量來查找當前和之前的運行級別詳細資訊。
例如,要查詢當前的運行級別,你需要運行:
$ echo $RUNLEVEL要查找先前的運行級別:
$ echo $PREVLEVEL如果你想將執行級別更改為其他設定,請編輯 /etc/inittab 檔案:
$ sudo vi /etc/inittab找到並編輯條目 initdefault,設置為你選擇的運行級別。例如,要將運行級別設置為多用戶圖形模式(運行級別 5),請按以下方式修改。
id:5:initdefault:
保存並關閉檔案。重新啟動系統以登入新的運行級別。
欲了解有關運行級別的更多細節,請參考 man 手冊頁。
$ man runlevel2. 在 Linux(Systemd)中檢查運行級別
在最近的 Linux 系統版本中(從 RHEL 7、Ubuntu 16.04 LTS 開始),運行級別的概念已被 systemd 目標取代。
以下是 Linux 發行版中 Systemd 目標的列表,這些發行版預設以 Systemd 作為服務管理器。
runlevel0.target、poweroff.target- 停機runlevel1.target,rescue.target- 單用戶文字模式runlevel2.target,multi-user.target- 未使用(使用者可定義)runlevel3.target、multi-user.target- 完整多用戶文字模式runlevel4.target,multi-user.target- 未使用(使用者可定義)runlevel5.target,graphical.target- 完整多使用者圖形模式(含基於 X 的登入畫面)runlevel6.target、reboot.target- 重新啟動
在使用 Systemd 作為預設服務管理器的 Linux 系統中,您可以使用以下命令來查找當前目標:
$ systemctl get-default範例輸出:
graphical.target如您在上述輸出中所見,我當前的運行級別(換句話說就是目標)是 5,這是圖形模式。
要查看所有目前已載入的目標,請執行:
$ systemctl list-units --type target範例輸出:
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
bluetooth.target loaded active active Bluetooth
cryptsetup.target loaded active active Local Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded active active Network (Pre)
network.target loaded active active Network
nfs-client.target loaded active active NFS client services
nss-lookup.target loaded active active Host and Network Name Lookups
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
rpc_pipefs.target loaded active active rpc_pipefs.target
rpcbind.target loaded active active RPC Port Mapper
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
timers.target loaded active active Timers
veritysetup.target loaded active active Local Verity Integrity Protected Volumes
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
26 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.上述命令將僅顯示活動的目標。
要查看所有已加載的目標(活動與非活動),請執行:
$ systemctl list-units --type target --all如果您想將 RunLevel 更改為其他,例如 runlevel3.target,請按以下方式設置:
$ sudo systemctl set-default runlevel3.target若只想在當前會話中更改為不同的目標單位,請執行以下命令:
$ sudo systemctl isolate runlevel3.target欲了解更多細節,請參考 Systemd 手冊頁。
$ man systemd3. 使用 who 指令查找 Linux 執行級別
正如其中一位讀者在下方評論區所建議的,我們也可以使用 who 命令如下來查找執行級別:
$ who -r範例輸出:
run-level 5 2025-08-04 11:09希望這對你有幫助。
