在使用 Linux 系統時,我們經常會接觸到「守護進程」(Daemon) 和「systemd 單元」(Unit) 這兩個術語。這兩個概念在Linux操作系統中都扮演著重要角色,但它們的含義與功能有所不同。本文將以易於初學者理解的方式,介紹守護進程與 systemd 單元這兩者的概念、差異以及種類。

1. 守護進程(Daemon)是什麼?

守護進程是一種在背景中執行的程式。它能自動啟動以執行系統的特定功能,通常用於網路伺服器、資料庫、網路管理等用途。守護進程不會直接與使用者互動,並會在系統啟動後持續執行。

守護進程的主要特徵:

  • 在背景中執行:守護進程會在系統開啟期間持續運作。
  • 自動啟動:大多數守護進程會在系統啟動時自動啟動。
  • 命名規則: 通常,守護進程的名稱以「d」結尾。例如,sshd 是提供 SSH 服務的守護進程,而 httpd 則是為網路伺服器提供服務的守護進程。

2. systemd單位(Unit)是什麼?

systemd是現代Linux中用於管理系統和服務的服務管理器。systemd處理從系統啟動到服務啟動、終止等多種任務,為了有效地管理這些任務,會使用單元 (Unit) 這個概念。單位是管理系統特定元素的組成單位,除了守護進程之外,還包括計時器、掛載點、通訊端等。

單位的主要種類:

  • 服務單元 (.service):管理與守護進程類似的背景服務。
  • 計時器單元 (.timer):根據特定的時間或週期執行任務。
  • 掛載單元 (.mount):管理檔案系統的掛載。
  • 通訊端單元 (.socket):管理網路通訊端,以便在需要時啟動服務。
  • 目標單元 (.target):將多個單元分組,以定義系統的特定狀態。

3. 守護進程和systemd單位的差異

  • 守護進程:僅是一個在背景中執行的程式,是系統服務的一種。主要用於持續執行特定任務。
  • systemd 單元:是管理系統各種元素(服務、計時器、掛載等)的組成單元。守護進程僅是 systemd 單元中的一個,並不是所有單元都是守護進程。

systemd 可以控制包含守護進程在內的各種單元,而守護進程則是在背景中處理系統的多項功能。此外,systemd 不僅管理守護進程,還能有效地管理其他如計時器或掛載點等系統的重要元素。

4. 通過例子了解守護進程和systemd單位

  • sshd.service:管理 SSH 守護進程的服務單元,在背景中提供 SSH 服務供使用者進行遠端存取。
  • cron.servicecron 守護進程是一個用來定時執行任務的程式,同樣由 systemd 管理的服務單元。
  • tmp.mount:掛載 /tmp 目錄的掛載單元,負責管理檔案系統,雖然不是守護進程,但在系統中扮演重要角色。

5. 總結

守護進程是在背景中執行的程式,屬於系統服務的一種。而 systemd 單元則是用於管理系統各種元素的組成單元,雖然包含了守護進程,但不僅限於守護進程。systemd 不僅管理守護進程,還管理計時器、掛載、通訊端等系統的多種功能。

初次接觸 Linux 的使用者可能會對守護進程和單元的概念感到困惑,但簡單總結如下:

  • 守護進程:是在背景中執行的程式,
  • systemd 單元:是控制系統各種元素的組成單元。

systemd 透過管理包括守護進程在內的各種系統元素,確保 Linux 系統的高效執行。


下篇文章預告:下一篇將討論控制 systemd 單元的命令 systemctl。將介紹如何使用 systemctl 來啟動及停止單元,以及如何啟用和停用等內容。