journalctl — 查詢 systemd 系統日誌

查詢 systemd 日誌,支援即時追蹤與多維度過濾。

語法

journalctl [選項] [匹配條件]

常用選項

選項 說明 範例
-f, --follow 即時追蹤新日誌(類似 tail -f) journalctl -f
-u 服務名稱 只顯示指定服務的日誌 journalctl -u nginx
-n N 只顯示最近 N 行(預設 10) journalctl -n 50
-p 等級 依優先級過濾(emerg/alert/crit/err/warning/notice/info/debug) journalctl -p err
-S 時間 顯示指定時間之後的日誌 journalctl -S "1 hour ago"
-U 時間 顯示指定時間之前的日誌 journalctl -U "2026-05-20 10:00"
--since / --until 同 -S / -U journalctl --since today
-k, --dmesg 只顯示核心日誌 journalctl -k
-b 只顯示本次開機的日誌 journalctl -b
--no-pager 不使用分頁工具(直接輸出,適合管線) journalctl -n 100 --no-pager
-o json 以 JSON 格式輸出 journalctl -o json

使用範例

範例 1:即時監控系統日誌

類似 tail -f /var/log/syslog,但涵蓋所有 systemd 服務。

$ journalctl -f
May 20 10:30:01 server systemd[1]: Started Daily apt activities.
範例 2:查看特定服務的日誌

只顯示 nginx 服務的日誌,不含其他服務的雜訊。

$ journalctl -u nginx -f
May 20 10:00:01 server nginx[1234]: 2026/05/20 10:00:01 [notice] 1234#0: start worker processes
範例 3:查看最近的錯誤

只顯示錯誤等級(err)以上的日誌,快速找出問題。

$ journalctl -p err -n 30 --no-pager
May 20 09:12:33 server kernel: [123456.789] ERROR: disk I/O error on sda
範例 4:查看指定時間範圍的日誌

查看過去一小時內的 nginx 日誌,搭配時間範圍診斷問題。

$ journalctl -u nginx --since "1 hour ago" --no-pager
範例 5:查看本次開機的核心日誌

查看從最近一次開機到現在的核心(kernel)訊息,等同於 dmesg。

$ journalctl -b -k
May 20 09:00:00 server kernel: Linux version 5.15.0-105-generic

常見錯誤與排錯

-- No entries --
原因
指定條件下沒有找到日誌,可能是服務名稱有誤或時間範圍不正確。
解法
確認服務名稱:systemctl list-units | grep 服務名,或擴大時間範圍。

延伸閱讀