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 服務名,或擴大時間範圍。