LinuxMastery By asdlkfj

LinuxMastery 16: 日誌查詢 journalctl

Systemd 的日誌中心

傳統 Linux 的 Log 分散在 /var/log/ 下的各個文字檔。Systemd 引入了 journald,將所有服務的 Log 統一收集並以二進位格式儲存。這讓搜尋和過濾變得非常強大。

核心指令詳解

  1. 基本查看

    journalctl
    

    這會列出從開機以來的所有 Log,通常太長了。

  2. 即時追蹤 (類似 tail -f)

    journalctl -f
    
  3. 依服務過濾

    # 只看 sshd 服務的 Log
    journalctl -u sshd
    
  4. 依時間過濾

    # 查看最近一小時的 Log
    journalctl --since "1 hour ago"
    # 查看特定時間段
    journalctl --since "2023-10-01 10:00:00" --until "2023-10-01 11:00:00"
    
  5. 只看錯誤訊息

    journalctl -p err
    

    -p (priority) 可以過濾等級,如 err, warning, info。

實戰心法

Journald 預設會佔用不少硬碟空間。你可以檢查 /var/log/journal 的大小。如果太大,可以使用以下指令清理:

# 只保留最近 500MB 的 Log
journalctl --vacuum-size=500M
# 只保留最近 2 天的 Log
journalctl --vacuum-time=2d

這對於硬碟空間較小的雲端主機非常實用。