
# 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 漏洞資料庫
記住:熟能生巧,多啲喺測試環境練習,唔好直接喺生產環境試新嘢!



