網站搜尋

如何檢查 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 runlevel

2. 在 Linux(Systemd)中檢查運行級別

在最近的 Linux 系統版本中(從 RHEL 7、Ubuntu 16.04 LTS 開始),運行級別的概念已被 systemd 目標取代。

以下是 Linux 發行版中 Systemd 目標的列表,這些發行版預設以 Systemd 作為服務管理器。

  1. runlevel0.target、poweroff.target - 停機
  2. runlevel1.target, rescue.target - 單用戶文字模式
  3. runlevel2.target,multi-user.target - 未使用(使用者可定義)
  4. runlevel3.target、multi-user.target - 完整多用戶文字模式
  5. runlevel4.target,multi-user.target - 未使用(使用者可定義)
  6. runlevel5.target,graphical.target - 完整多使用者圖形模式(含基於 X 的登入畫面)
  7. 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'.

檢查 Linux(Systemd)的運行級別

上述命令將僅顯示活動的目標。

要查看所有已加載的目標(活動與非活動),請執行:

$ systemctl list-units --type target --all

如果您想將 RunLevel 更改為其他,例如 runlevel3.target,請按以下方式設置:

$ sudo systemctl set-default runlevel3.target

若只想在當前會話中更改為不同的目標單位,請執行以下命令:

$ sudo systemctl isolate runlevel3.target

欲了解更多細節,請參考 Systemd 手冊頁。

$ man systemd

3. 使用 who 指令查找 Linux 執行級別

正如其中一位讀者在下方評論區所建議的,我們也可以使用 who 命令如下來查找執行級別:

$ who -r

範例輸出:

run-level 5  2025-08-04 11:09

希望這對你有幫助。

相關閱讀:

  • 如何列出 Linux 開機時的啟動服務
  • 理解 Linux 中的使用者空間重啟(軟重啟)操作