在使用 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.service:cron守護進程是一個用來定時執行任務的程式,同樣由 systemd 管理的服務單元。tmp.mount:掛載/tmp目錄的掛載單元,負責管理檔案系統,雖然不是守護進程,但在系統中扮演重要角色。
5. 總結
守護進程是在背景中執行的程式,屬於系統服務的一種。而 systemd 單元則是用於管理系統各種元素的組成單元,雖然包含了守護進程,但不僅限於守護進程。systemd 不僅管理守護進程,還管理計時器、掛載、通訊端等系統的多種功能。
初次接觸 Linux 的使用者可能會對守護進程和單元的概念感到困惑,但簡單總結如下:
- 守護進程:是在背景中執行的程式,
- systemd 單元:是控制系統各種元素的組成單元。
systemd 透過管理包括守護進程在內的各種系統元素,確保 Linux 系統的高效執行。
下篇文章預告:下一篇將討論控制 systemd 單元的命令 systemctl。將介紹如何使用 systemctl 來啟動及停止單元,以及如何啟用和停用等內容。