螢幕上顯示程式碼的終端機畫面,象徵 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` 是系統服務管理的指令,它將傳統的 `service` 和 `chkconfig` 這兩個命令組合到一起:`service` 負責的「立即啟動/停止」與 `chkconfig` 負責的「開機是否啟用」,現在都交由 `systemctl` 一個指令處理。只要系統採用 Systemd(CentOS 7 之後、多數主流發行版),服務管理就應該以 `systemctl` 為準。

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

systemctl 服務管理指令總覽

systemctl 的語法怎麼寫?

基本語法只有一行:

```cmd

[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

簡單記法:`start`/`stop`/`restart`/`reload` 管「現在此刻」,`enable`/`disable` 管「下次開機」,`status`/`is-active`/`is-enabled` 用來查狀態。

systemctl 實際使用範例

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

啟動 atd 服務:

```cmd

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

```

關閉 atd 服務:

```cmd

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

```

查看服務目前狀態:

```cmd

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

```

設定開機時自動啟動:

```cmd

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

```

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

```cmd

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

```

查看所有已啟動的服務:

```cmd

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

```

重啟某個服務:

```cmd

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

```

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

延伸閱讀

常見問題

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

`systemctl` 把 `service` 的啟停功能與 `chkconfig` 的開機啟用設定合併成一個指令。在採用 Systemd 的發行版(如 CentOS 7+)上,`service` 與 `chkconfig` 只是相容層,建議直接使用 `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 結構。)

關於作者 {#author}

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

首次發布:2019-10-01