在使用 Linux 系統時,我們經常會接觸到「守護行程(Daemon)」和「systemd 單元(Unit)」這兩個術語。這兩個概念在 Linux 作業系統中都扮演著重要角色,但它們的含義與功能並不相同。本文將以初學者也容易理解的方式,介紹守護行程與 systemd 單元的概念、差異,以及常見的類型。 #### 1. 什麼是守護行程(Daemon)? 守護行程是一種在背景中執行的程式。它通常會在系統啟動後自動運作,負責執行某些特定功能,例如網路服務、資料庫服務或其他系統服務。守護行程通常不會直接與使用者互動,而是持續在背景中運行。 **守護行程的主要特徵:** * **在背景中執行**:守護行程通常會在系統運行期間持續工作。 * **可自動啟動**:許多守護行程會在系統開機時自動啟動。 * **命名規則**:許多守護行程的名稱習慣以「d」結尾。例如,`sshd` 是提供 SSH 服務的守護行程,`httpd` 則是提供網頁伺服器功能的守護行程。 #### 2. 什麼是 systemd 單元(Unit)? systemd 是現代 Linux 系統中常見的初始化系統與服務管理器。它負責管理系統啟動流程,以及各種服務的啟動、停止與運行狀態。為了有效管理這些資源,systemd 引入了 **單元(Unit)** 的概念。 單元可以理解為 systemd 用來管理各種系統資源的基本單位。它不僅包含守護行程,還包括計時器、掛載點、Socket、目標等不同類型的對象。 **常見的單元類型:** * **服務單元(.service)**:用來管理類似守護行程的背景服務。 * **計時器單元(.timer)**:根據指定時間或週期來執行任務。 * **掛載單元(.mount)**:用來管理檔案系統的掛載。 * **Socket 單元(.socket)**:用來管理網路 Socket,並可在需要時觸發相關服務啟動。 * **目標單元(.target)**:用來將多個單元分組,以表示系統的某種運行狀態。 #### 3. 守護行程與 systemd 單元有什麼不同? * **守護行程**:本質上是一個在背景中執行的程式,通常負責長時間持續運作的服務。 * **systemd 單元**:是 systemd 用來管理各種系統資源的單位,範圍比守護行程更廣。 換句話說,守護行程可以是 systemd 所管理的其中一種對象,但並不是所有 systemd 單元都是守護行程。 systemd 除了能管理守護行程之外,也能管理計時器、掛載點、Socket 等其他系統資源。 #### 4. 透過例子理解守護行程與 systemd 單元 * `sshd.service`:這是一個服務單元,用來管理 SSH 守護行程,讓使用者可以透過 SSH 進行遠端登入。 * `cron.service`:`cron` 是用來定期執行任務的程式,而 `cron.service` 則是由 systemd 管理它的服務單元。 * `tmp.mount`:這是一個用來掛載 `/tmp` 目錄的掛載單元。它不是守護行程,但同樣是 systemd 所管理的重要系統資源之一。 #### 5. 總結 守護行程是在背景中執行的程式,通常屬於系統服務的一部分;而 systemd 單元則是 systemd 用來管理各種系統資源的基本單位。守護行程只是其中一種類型,並不能代表所有單元。 對剛接觸 Linux 的使用者來說,這兩個概念確實容易混淆。不過可以先簡單記住: * **守護行程**:在背景中持續執行的程式 * **systemd 單元**:systemd 用來管理各種系統資源的單位 透過 systemd 對各類單元的管理,Linux 系統才能更有條理地啟動、運行與維護。 --- **下篇文章預告**:下一篇將介紹用來控制 systemd 單元的命令 `systemctl`,包括如何啟動、停止、啟用與停用單元等基本操作。