首頁 > 套件與系統管理 > systemd

systemd: 系統與服務管理器

systemd 是現代 Linux 系統中最廣泛使用的系統與服務管理器。它取代了傳統的 init 系統,整合提供了系統啟動、服務管理、設備控制、日誌管理等多種核心功能。

概述

systemd 在有效管理系統啟動過程、監控運行中的服務以及控制系統各種狀態方面扮演著核心角色。與 init 依序執行腳本的方式不同,systemd 根據依賴關係並行處理服務,大幅提升了啟動速度。這是現代 Linux 系統性能與穩定性的重要貢獻因素。

主要特點

systemd 的主要特點如下:

  • 並行啟動: 分析服務依賴關係,同時執行多個服務,縮短啟動時間。
  • 整合管理: 將系統啟動、服務、設備、日誌等多種元素整合在單一框架下管理。
  • 服務監控: 當服務失敗時自動重啟,有助於穩定運行。
  • 取代運行級別: 引入了 '目標 (target)' 概念取代運行級別 (runlevel),以控制系統狀態。

與 init 的關係

systemd 是傳統 init 系統的後繼者和替代者。它繼承了 init 負責的系統啟動和關閉角色,並增加了更好的功能。

  • init: 第一個執行的進程,在啟動時參考 `/etc/inittab` 文件,根據運行級別依序執行腳本。
  • systemd: 同樣是 PID 1 進程,但使用 '目標' 取代運行級別,並根據依賴關係並行處理服務,使其更快速、更靈活。
  • 兼容性: 在大多數現代 Linux 系統中,init 通常是 systemd 的符號連結,因此即使使用 init 命令,systemd 也會代為執行。

核心概念

理解 systemd 所必需的核心概念。

單元 (Unit)

systemd 管理的所有對象(服務、掛載點、設備等)都被定義為 '單元'。每個單元都有一個定義特定任務的配置文件(如 `*.service`, `*.mount` 等)。

  • Service Unit: 管理網頁伺服器 (nginx.service) 或資料庫 (mysql.service) 等後台進程。
  • Target Unit: 用於將多個單元分組。這是取代運行級別的概念,'multi-user.target' 表示多用戶模式,'graphical.target' 表示圖形模式。
  • Mount Unit: 管理文件系統掛載點。

systemctl

systemd 的主要命令行工具。用於啟動、停止、重啟服務或檢查單元狀態。

  • 啟動服務: sudo systemctl start nginx
  • 檢查服務狀態: sudo systemctl status nginx
  • 重啟系統: sudo systemctl reboot

journalctl

用於查詢 systemd 整合管理的系統日誌的命令。可以按服務、按時間、按優先級過濾日誌。

  • 查看所有日誌: journalctl
  • 查看特定服務日誌: journalctl -u nginx.service
  • 實時查看日誌: journalctl -f

使用範例

systemd 核心命令 systemctl 和 journalctl 的使用範例。

確認系統啟動目標

systemctl get-default

確認系統是透過哪個目標啟動的。

系統關機

sudo systemctl poweroff

透過 systemd 安全地關閉系統。與 poweroff 命令功能相同。

啟用/禁用特定服務

sudo systemctl enable nginx
sudo systemctl disable nginx

設定特定服務在系統啟動時自動啟動或禁用。

重啟服務

sudo systemctl restart nginx

重啟運行中的網頁伺服器服務。在更改配置文件後很有用。

提示與注意事項

使用 systemd 時值得注意的事項。

提示

  • systemd 的單元文件主要位於 `/etc/systemd/system/` 或 `/lib/systemd/system/` 目錄中。
  • systemd 整合管理了大部分與啟動/關閉相關的命令。因此,`halt`、`reboot`、`poweroff` 等命令通常是 `systemctl` 的符號連結。
  • 使用 `systemctl status` 命令不僅可以查看服務狀態,還可以同時查看最新的日誌。

相關命令

功能上相似或經常一起使用的命令。


相同類別命令