Linux systemctl 指令教學技術封面圖

← INSIGHTS & PERSPECTIVES | DevOps

使用 systemctl 操作 Linux 系統層級與 target

整理 systemctl list-units、get-default、isolate 與 WantedBy,用來查看與切換 Linux target。

在 systemd 系統中,傳統 runlevel 對應到 target。使用 systemctl 可以列出所有 target、查看預設 target、切換到文字模式,並檢查某個服務會被哪個 target 啟動。

如何列出所有 systemd target?

列出 systemd target 可以使用 systemctl list-units --type target。這個指令會顯示目前系統載入的 target unit。

systemctl list-units --type target

target 是 systemd 用來表示系統狀態或服務集合的 unit。常見 target 包含 multi-user.targetgraphical.targetrescue.target 等。

如果你正在排查系統開機後進入哪個模式,先列出 target 可以快速理解目前系統可用的層級。

如何查看目前預設運作層級?

查看預設運作層級可以使用 systemctl get-default。這個指令會回傳系統開機後預設進入的 target。

systemctl get-default

常見結果包含:

target對應概念
multi-user.target類似傳統 runlevel 3,文字模式與多使用者服務。
graphical.target類似傳統 runlevel 5,包含圖形介面。
rescue.target類似單人救援模式。

如何切換到文字模式?

切換到文字模式可以使用 systemctl isolate multi-user.target。這個指令會停止不屬於目標 target 的 unit,並切換到指定 target。

systemctl isolate multi-user.target

isolate 會立即改變目前系統狀態,因此不要在不熟悉的正式環境隨意執行。若只是想設定下次開機預設 target,應改用 systemctl set-default

sudo systemctl set-default multi-user.target

如何查看某個服務屬於哪個 target?

查看服務被哪個 target 啟動,可以使用 systemctl show -p WantedBy service-nameWantedBy 會顯示 unit install 時掛到哪個 target。

systemctl show -p WantedBy service-name

如果要檢查服務是否會在開機時啟動,也可以搭配:

systemctl is-enabled service-name
systemctl status service-name

WantedBy=multi-user.target 通常代表服務在多使用者模式會被啟動。這個資訊對排查服務為什麼開機沒起來很有幫助。

systemd target 和 chkconfig runlevel 如何對照?

systemd target 是傳統 SysV runlevel 的替代概念。理解 target 與 runlevel 對照,可以幫助從舊版 Linux 管理方式轉到 systemd。

傳統 runlevelsystemd target說明
0poweroff.target關機
1rescue.target救援模式
3multi-user.target多使用者文字模式
5graphical.target圖形介面模式
6reboot.target重新啟動

chkconfig 轉到 systemctl 時,重點不是記住每個數字,而是理解服務被哪個 target 需要、是否 enable,以及目前 active 狀態。

常見問題

Qsystemctl target 是什麼?

systemctl target 是 systemd 中用來組織服務與系統狀態的 unit。target 可以代表文字模式、圖形模式、救援模式或關機狀態。

Qmulti-user.target 等於 runlevel 3 嗎?

multi-user.target 大致對應傳統 runlevel 3。兩者概念相近,但 systemd target 更彈性,實作方式也不同。

Qgraphical.target 等於 runlevel 5 嗎?

graphical.target 大致對應傳統 runlevel 5。graphical.target 通常包含 multi-user.target 再加上 display manager。

Qisolate 和 set-default 差在哪裡?

systemctl isolate 會立刻切換目前 target。systemctl set-default 只改變下次開機的預設 target。

QWantedBy 可以判斷服務是否正在執行嗎?

WantedBy 不能判斷服務是否正在執行。WantedBy 只表示服務 install 時掛到哪個 target;是否正在執行要看 systemctl status

參考資料

延伸閱讀

最後更新

Wed Oct 02 2019 08:00:00 GMT+0800 (Taiwan Standard Time)

關於作者

Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。

首次發布:2019-10-02