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: