systemd 中的 **Unit (單元)** 是系統管理的最小單位,每個單元對應一個設定檔 (如 .service, .socket, .timer, .path),定義特定功能或資源。
| 類型 | 副檔名 | 用途 |
|---|---|---|
| Service | .service | 守護進程啟動/停止/重啟邏輯 (如 nginx.service) |
| Socket | .socket | 監聽 Socket,支援 socket-activated 服務 (如 docker.socket) |
| Timer | .timer | 定時觸發,替代 cron (如 logrotate.timer) |
| Path | .path | 監視檔案/目錄變更觸發服務 (如 systemd.path) |
| Mount | .mount | 檔案系統掛載點 |
| Automount | .automount | 自動掛載 |
| Target | .target | 邏輯群組,類似 SysV runlevel (如 multi-user.target) |
| Slice | .slice | 資源控制群組 (CGroup 層級) |
| Scope | .scope | 外部建立的進程群組 |
Requires=、Wants=、After=、Before= 定義啟動順序與強弱依賴。nginx.socket 配合 nginx.service 實現按需啟動。systemctl list-units --type=service # 列出所有服務單元
systemctl status nginx.service # 查看狀態
systemctl enable --now nginx.service # 設定開機自啟並立即啟動
systemctl edit nginx.service # 覆蓋/擴充設定 (drop-in)
理解單元概念,才能靈活運用 systemd 管理現代 Linux 系統。