news 2026/4/18 9:54:58

journalctl命令以及参数详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
journalctl命令以及参数详解

概述

journalctl是 Linux 系统(基于 systemd)中用于查询和显示系统日志的核心工具。它读取的是systemd-journald服务维护的二进制日志文件。

相比传统的cat /var/log/messagestail -fjournalctl更加强大,因为它支持按时间、按服务、按启动次序、按日志级别等多种维度的结构化查询。

一、 基础参数与常用选项

参数简写含义详细说明
–unit-u指定服务最常用。只查看特定服务的日志,如 -u kubelet。
–follow-f实时追踪类似于 tail -f,实时输出最新的日志。
–lines-n指定行数显示最近的 N 行。默认为 10 行。如 -n 100。
–boot-b指定启动次序查看某次启动后的日志。-b 是本次启动,-b -1 是上一次启动。
–dmesg-k内核日志只显示内核日志(类似 dmesg 命令),排查 OOM 或硬件故障专用。
–since开始时间指定查询的起始时间,支持 “1 hour ago”, “2024-01-01” 等格式。
–until结束时间指定查询的结束时间。
–output-o输出格式调整显示格式,如 short (默认), json, cat (只看信息)。
–reverse-r反向显示最新的日志显示在最上面(默认是最新的在最下面)。
–no-pager不分页直接输出所有内容到屏幕,不通过 less 分页,适合脚本处理或输出极短时。
–priority-p日志级别过滤日志等级,如 err, warning, info。

二、 实战详解与场景演练

  1. 查看特定服务的日志 (K8s 排查必备)

这是运维中最常用的命令,只看关键组件的日志。

# 查看 kubelet 的日志 journalctl -u kubelet # 查看 Docker 的日志 journalctl -u docker # 实时查看 kubelet 的最新日志(类似 tail -f) journalctl -u kubelet -f
  1. 按时间段过滤 (故障回溯)

当你知道故障发生的大致时间时,这招非常有用。

# 查看今天的所有日志 journalctl --since "today" # 查看最近 1 小时的日志 journalctl --since "1 hour ago" # 查看指定时间段的日志 journalctl --since "2023-10-24 10:00:00" --until "2023-10-24 11:00:00"
  1. 排查节点重启原因 (配合-b)

如果你的服务器重启了,想看重启前那一刻发生了什么,或者是上一次启动期间的日志。

# 查看当前启动后的日志 (等同于 uptime 之后的日志) journalctl -b # 查看“上一次”启动周期的日志 (即重启前的日志) —— 排查 crash 的神器 journalctl -b -1# 查看“倒数第二次”启动周期的日志 journalctl -b -2

注意:如果没有配置持久化存储日志(/var/log/journal目录不存在),重启后历史日志可能会丢失。

  1. 只看错误级别的日志

通过日志级别过滤,屏蔽掉海量的 INFO 和 DEBUG 信息。

# 查看所有错误 (Error) 及以上级别的日志 journalctl -p err # 查看某个服务的错误日志 journalctl -u kubelet -p err

级别代码:emerg(0),alert(1),crit(2),err(3),warning(4),notice(5),info(6),debug(7).

  1. 查看内核日志

当 K8s 节点出现 OOM (内存溢出) 或硬件报错时,日志通常在内核层。

journalctl -k # 或者 journalctl --dmesg

配合 grep 查找OOM:

journalctl -k | grep -i "killed"
  1. 格式化输出

默认情况下,如果日志单行太长,journalctl可能会截断或需要左右滚动。

#不分页,直接打印所有内容(自动换行) journalctl -u kubelet --no-pager # 输出为 JSON 格式 (方便程序解析或导入 ELK) journalctl -u kubelet -o json-pretty # 直接在当前界面按右箭头键 → journalctl -u kubelet

三、 日志容量管理 (清理磁盘空间)

systemd 日志默认存储在/run/log/journal(内存,重启丢) 或/var/log/journal(磁盘,持久化)。如果不加限制,可能会占满磁盘。

  1. 查看当前日志占用空间:
journalctl --disk-usage
  1. 清理日志:
# 仅保留最近 1GB 的日志 journalctl --vacuum-size=1G # 仅保留最近 2 天的日志 journalctl --vacuum-time=2d

四、 组合拳 (高级用法示例)

场景:K8s 节点刚刚因为负载过高重启了,我想看重启前 20 分钟内,kubelet 有没有报错。

命令组合:

  1. -b -1: 选择上一次启动周期(重启前)。
  2. -u kubelet: 只看 kubelet。
  3. -p err: 只看错误。
  4. --since: 如果能确定大概时间。
# 简化版:看上一次启动期间 kubelet 的最后 500 行日志 journalctl -b -1 -u kubelet -n 500 # 进阶版:看上一次启动期间所有的系统错误和内核崩溃信息 journalctl -b -1 -p err -k

总结

日常运维排查,只要掌握以下这句即可应对大部分的场景:

journalctl -u <服务名> -f -n 100 --since "1 hour ago"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:36:03

数据损坏类型及相关恢复方法

&#xff08;一&#xff09;文件的删除及恢复文件删除的本质是操作系统在文件目录项首位写入删除标记&#xff08;如FAT32的"0xE5"&#xff0c;NTFS的$MFT条目置空&#xff09;&#xff0c;同时在文件分配表&#xff08;FAT&#xff09;或主文件表&#xff08;MFT&am…

作者头像 李华
网站建设 2026/4/17 12:19:40

JavaEE——多线程(5)

Java线程池详解Java 线程池是管理线程生命周期、控制并发度的核心组件&#xff0c;基于 “池化思想” 减少线程创建 / 销毁的开销&#xff0c;优化系统资源利用率&#xff0c;同时提供任务队列、拒绝策略等机制&#xff0c;确保并发编程的稳定性和可维护性。1.为什么需要线程池…

作者头像 李华
网站建设 2026/4/18 3:30:54

0095__WiX Toolset

https://blog.csdn.net/gitblog_00552/article/details/155294915

作者头像 李华
网站建设 2026/4/18 3:32:29

ARM处理器芯片之UEFI

UEFI&#xff08;统一可扩展固件接口&#xff09;是现代计算机中用于定义操作系统与固件之间接口的规范&#xff0c;旨在替代传统的BIOS&#xff08;基本输入/输出系统&#xff09;。它起源于英特尔在1998年开发的EFI&#xff08;可扩展固件接口&#xff09;&#xff0c;并于20…

作者头像 李华
网站建设 2026/4/18 8:32:06

国社科基金申报书“选题与说明依据”用AI怎么写?借助Gemini 3 Pro一次理清研究演进逻辑

课题基金申报书“选题说明与依据”部分主要是用于阐述选题的实践与理论依据,论证其价值意义,并引出研究问题。以下是一份国社科基金申报书示例,一般完整的选题说明与依据包含三个部分,即选题说明、国内外相关研究学术史梳理、学术价值与应用价值。 今天七哥以国社科基金申报…

作者头像 李华
网站建设 2026/4/18 0:45:54

学长亲荐2026TOP8AI论文平台:本科生毕业论文写作全测评

学长亲荐2026TOP8AI论文平台&#xff1a;本科生毕业论文写作全测评 2026年AI论文写作平台测评&#xff1a;为什么需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文写作工具已经成为本科生撰写毕业论文的重要辅助手段。然而&#xff0c;市面上的平台种类…

作者头像 李华