螢幕上顯示程式碼的終端機畫面,象徵 Linux 服務管理

← INSIGHTS & PERSPECTIVES | DevOps

Linux 管理 Service 的指令:systemctl 完整用法與範例

整理 Linux 系統服務管理指令 systemctl 的完整用法:systemctl start、stop、restart、reload、enable、disable、status、is-active、is-enabled 與 list-units 等指令語法與 atd 服務實際範例,取代傳統 service 與 chkconfig,一篇搞懂 Systemd 時代的服務管理。

在 Linux 上管理系統服務(daemon),現在幾乎都離不開 systemctl 這個指令。這篇文章整理 systemctl 的指令語法、每個 subcommand 的用途,以及以 atd 服務為例的實際操作範例,讓你不用再翻手冊就能完成啟動、停止、開機啟用等日常服務管理工作。

什麼是 systemctl?為什麼它取代了 service 和 chkconfig?

systemctl 是系統服務管理的指令,它將傳統的 servicechkconfig 這兩個命令組合到一起:service 負責的「立即啟動/停止」與 chkconfig 負責的「開機是否啟用」,現在都交由 systemctl 一個指令處理。只要系統採用 Systemd(CentOS 7 之後、多數主流發行版),服務管理就應該以 systemctl 為準。

以下是一張當時整理的指令總覽截圖:

systemctl 服務管理指令總覽

systemctl 的語法怎麼寫?

基本語法只有一行:

[root@study ~]# systemctl [command] [unit]

其中 unit 就是要操作的服務名稱(通常帶 .service 副檔名,可省略),command 則主要有以下這些:

command說明
start立刻啟動後面接的 unit
stop立刻關閉後面接的 unit
restart立刻關閉後啟動後面接的 unit,亦即執行 stop 再 start 的意思
reload不關閉後面接的 unit 的情況下,重新載入設定檔,讓設定生效
enable設定下次開機時,後面接的 unit 會被啟動
disable設定下次開機時,後面接的 unit 不會被啟動
status目前後面接的這個 unit 的狀態,會列出有沒有正在執行、開機預設執行否、登錄等資訊
is-active目前有沒有正在運作中
is-enabled開機時有沒有預設要啟用這個 unit

簡單記法:startstoprestartreload 管「現在此刻」,enabledisable 管「下次開機」,statusis-activeis-enabled 用來查狀態。

systemctl 實際使用範例

atd 服務為例,常用的操作如下:

啟動 atd 服務:

[root@study ~]# systemctl start atd.service

關閉 atd 服務:

[root@study ~]# systemctl stop atd.service

查看服務目前狀態:

[root@study ~]# systemctl status atd.service

設定開機時自動啟動:

[root@study ~]# systemctl enable atd.service

設定開機時不要自動啟動:

[root@study ~]# systemctl disable atd.service

查看所有已啟動的服務:

[root@study ~]# systemctl list-units --type=service

重啟某個服務:

[root@study ~]# systemctl restart atd.service

systemctl status 的輸出特別實用:它會同時告訴你服務現在是否在執行(active (running))、有沒有被設定為開機啟動(enableddisabled),以及最近的日誌,一行指令就能掌握服務全貌。

常見問題

Qsystemctl 和傳統的 service、chkconfig 有什麼差別?

systemctlservice 的啟停功能與 chkconfig 的開機啟用設定合併成一個指令。在採用 Systemd 的發行版(如 CentOS 7+)上,servicechkconfig 只是相容層,建議直接使用 systemctl

Qsystemctl enable 和 systemctl start 有什麼不同?

start 是「現在立刻」啟動服務,重開機後不會自動啟動;enable 是設定「下次開機」時自動啟動服務,但不會立刻啟動。要同時達到兩個效果,可以連續執行 systemctl enable --now <unit>

Q如何確認服務目前是否正在執行?

systemctl status <unit> 可以看到完整狀態與日誌;只想快速確認是否在運作,可用 systemctl is-active <unit>,回傳 active 即代表執行中。

Q如何列出系統上所有已啟動的服務?

執行 systemctl list-units --type=service 可列出目前載入且正在運作的服務。若要包含開機啟用但未執行的,可加上 --all 參數。

參考資料

  • 本文為 IT邦幫忙鐵人賽系列筆記,指令說明參考鳥哥的 Linux 私房菜之 Systemd 服務管理章節。

延伸閱讀

最後更新

2026-08-28(原文發布於 2019-10-01,本文保留原始筆記內容並補上 GEO 結構。)

關於作者

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

首次發布:2019-10-01