journalctl
是 Systemd 日志管理工具,用于查看、查詢和管理 Systemd 系統日志。
#-x: 詳細模式(Verbose)。這個選項會使 journalctl 輸出完整的日志消息,包括其原始結構,如嵌套的JSON消息、未展開的環境變量等。這對于解析復雜日志消息或包含豐富元數據的日志條目非常有用。
#-e: 顯示日志尾部。當日志消息被截斷時,此選項會嘗試從日志存儲中獲取完整的消息。這對于查看可能被系統日志截斷的長日志條目非常有用。
journalctl -xefu kubelet# 指定查看與特定 systemd 單元(如服務、定時任務等)相關的日志。例如,查看 nginx.service 的日志:
journalctl -u nginx.service# 按日志消息標識符(如程序名、syslog標識等)過濾日志。例如,查看所有由 rsyslogd 發出的消息:
journalctl -t rsyslogd# 篩選特定優先級(或優先級范圍)的日志消息。優先級包括(從低到高):emerg、alert、crit、err、warning、notice、info、debug。例如,查看警告級別及以上的消息:
journalctl -p warning# 實時滾動顯示新增日志,類似于 tail -f。例如,實時監控系統日志:
journalctl -f# 顯示最近的 <num> 條日志記錄。
journalctl -n 100# 指定輸出日志的格式。常見的格式包括 short、short-precise、verbose、json、json-pretty 等。例如,以易于閱讀的 JSON 格式輸出:
journalctl -o json-pretty# 顯示自上次系統啟動以來的日志。
journalctl -b# 反向顯示日志,即從最新到最舊。
journalctl -r# 指定顯示自(--since)或至(--until)某一時間點以來的日志。時間可以是絕對時間(如 2024-0?-01 09:30:00)或相對時間(如 "-5min" 表示過去5分鐘內的日志)。
# 顯示過去1小時的日志
journalctl --since="-1hour"# 顯示直到昨天午夜的日志
journalctl --until="yesterday"# 以UTC時間顯示日志。
journalctl -U# 以本地時間顯示日志。
journalctl -L# 清理日志,確保日志文件總大小不超過指定值(如 100M)。超過該大小的舊日志將被刪除。
journalctl --vacuum-size=100M# 清理早于指定時間(如 2weeks)的日志。
journalctl --vacuum-time=2weeks# 根據正則表達式 <pattern> 過濾日志消息內容。
journalctl -g 'error|critical'# 以JSON格式輸出日志,并保留原始JSON消息結構(與-o json的區別在于后者會對JSON消息進行解碼和美化)。
-j 或 --json:# 合并相同優先級和同一來源的消息,減少輸出冗余。
-m 或 --merge:# 顯示當前日志位置的游標,可用于后續查詢。
--show-cursor:# 列出所有系統啟動記錄的序列號,可用于與 --boot 結合查看特定啟動周期的日志。
--list-boots:# 顯示當前日志占用的磁盤空間。
--disk-usage:# 查看特定用戶(通過UID指定)的日志。
--user=<uid>:# 列出日志中的所有消息ID及其說明。
--catalog:# 與 --catalog 類似,但顯示更多詳細信息。
--catalog-verbose: