Linux 系統管理必學:用 systemd 管理服務嘅完整指南

# Linux 系統管理必學:用 systemd 管理服務嘅完整指南 如果你係做 IT 支援或者系統管理,systemd 係你每日都會接觸到嘅工具。但係好多人只係識得 `systemctl start` 同 `systemctl stop`,其實 systemd 仲有好多進階功能可以幫你更有效咁管理服務。今日就同大家深入講解 systemd 嘅實戰技巧。 ## 乜嘢係 systemd? syste...

Linux 系統管理必學:用 systemd 管理服務嘅完整指南 - 文章重點速覽 infographic

# Linux 系統管理必學:用 systemd 管理服務嘅完整指南

如果你係做 IT 支援或者系統管理,systemd 係你每日都會接觸到嘅工具。但係好多人只係識得 `systemctl start` 同 `systemctl stop`,其實 systemd 仲有好多進階功能可以幫你更有效咁管理服務。今日就同大家深入講解 systemd 嘅實戰技巧。

## 乜嘢係 systemd?

systemd 係現代 Linux 發行版(包括 Ubuntu、CentOS、Debian、RHEL)嘅預設初始化系統。佢負責啟動系統、管理服務、處理日誌同埋監控系統狀態。簡單嚟講,佢係成個 Linux 系統嘅「大管家」。

## systemd 基本操作重温

先由最基本嘅指令開始,確保大家都跟到:

# 啟動一個服務
sudo systemctl start nginx

# 停止一個服務
sudo systemctl stop nginx

# 重新啟動服務
sudo systemctl restart nginx

# 查看服務狀態
sudo systemctl status nginx

# 設定開機自動啟動
sudo systemctl enable nginx

# 取消開機自動啟動
sudo systemctl disable nginx

## systemd 進階技巧:自訂 Service Unit 檔案

當你需要將自己寫嘅應用程式變成系統服務,就要建立一個 `.service` unit 檔案。以下係一個完整嘅範例:

sudo nano /etc/systemd/system/myapp.service

[Unit]
Description=My Custom Web Application
After=network.target
Wants=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
RestartSec=5s
StandardOutput=journal
StandardError=journal
Environment="APP_ENV=production"
Environment="PORT=8080"

[Install]
WantedBy=multi-user.target

建立完之後,執行以下指令令佢生效:

# 重新載入 systemd 設定
sudo systemctl daemon-reload

# 啟動你嘅服務
sudo systemctl start myapp

# 檢查狀態
sudo systemctl status myapp

# 設定開機啟動
sudo systemctl enable myapp

## systemd 常用除錯技巧

### 1. 用 journalctl 睇日誌

systemd 內置嘅 journald 係一個強大嘅日誌系統:

# 查看特定服務嘅日誌
sudo journalctl -u nginx

# 實時追蹤日誌(類似 tail -f)
sudo journalctl -u nginx -f

# 查看最近 50 條日誌
sudo journalctl -u nginx -n 50

# 按時間範圍過濾
sudo journalctl -u nginx --since "2026-07-09 10:00:00" --until "2026-07-09 12:00:00"

# 查看今次開機以嚟嘅日誌
sudo journalctl -u nginx -b

### 2. 分析服務依賴關係

# 查看服務嘅依賴樹
systemctl list-dependencies nginx

# 反向查看:邊啲服務依賴呢個服務
systemctl list-dependencies --reverse nginx

### 3. 檢查失敗嘅服務

# 列出所有失敗嘅服務
systemctl --failed

# 重置失敗狀態(解決問題後)
sudo systemctl reset-failed nginx

## systemd Timer:取代 Cron Job 嘅現代方案

systemd 嘅 timer 功能可以取代傳統嘅 cron job,而且功能更強大:

# 建立 timer unit
sudo nano /etc/systemd/system/backup.timer

[Unit]
Description=Daily Backup Timer

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

# 啟用同啟動 timer
sudo systemctl enable backup.timer
sudo systemctl start backup.timer

# 查看所有 timer
systemctl list-timers --all

## systemd 安全加固:用 Sandboxing 保護服務

systemd 提供咗強大嘅沙箱功能,可以限制服務嘅權限:

[Service]
# 禁止服務修改系統設定
ProtectSystem=strict
ProtectHome=true

# 限制網絡訪問
PrivateNetwork=true

# 建立私有 /tmp 目錄
PrivateTmp=true

# 禁止服務獲得新權限
NoNewPrivileges=true

# 限制 CPU 使用
CPUQuota=50%

## 總結

systemd 唔單止係一個服務管理器,佢仲係一個完整嘅系統管理框架。掌握咗上面嘅技巧之後,你就可以更專業咁管理 Linux 伺服器,無論係除錯、自動化定係安全加固都更加得心應手。

🔗 參考資料:NVD NIST 漏洞資料庫

記住:熟能生巧,多啲喺測試環境練習,唔好直接喺生產環境試新嘢!