首页/系统/信创系统运维速查/内核日志:journalctl -k 与 dmesg
服务与运维65 条

内核日志:journalctl -k 与 dmesg

内核与驱动信息用 journalctl -k 查看(持久化);dmesg 直接读内核环形缓冲区,-T 显示可读时间、-w 实时跟踪;非 root 可能受 dmesg_restrict 限制。

信创系统运维速查系统更新于 2026-10-13

内核日志从哪来

内核与驱动在运行中把消息写入自己的环形缓冲区:硬件报错、磁盘超时、网络链路变化、内存不足杀进程、内核崩溃调用栈都出现在这里。读取它有两条路——通过日志服务按内核来源过滤可以拿到结构化、可持久化的记录,也能按时间与优先级筛选;直接读缓冲区则最快,但受限于缓冲区容量,新消息会覆盖旧消息。排查硬件与驱动类问题时,这里往往是第一现场。

基本信息

读取命令按内核来源过滤读取系统日志,或用缓冲区读取命令
时间显示缓冲区命令默认时间戳不便阅读,需加可读时间选项
优先级过滤可只看错误及以上级别
持久化缓冲区内容重启即丢,落盘依赖日志服务是否持久化
访问限制部分系统限制普通用户读取内核日志
适用平台Kylin V10 / UOS / openEuler 通用

典型使用场景

  • 服务莫名被杀:确认是否触发内存不足的进程终止记录
  • 磁盘异常:查看块设备报错、文件系统一致性告警
  • 网卡链路抖动:核对链路上下线记录,判断是物理层还是配置层
  • 启动问题:按本次启动过滤内核日志,看设备初始化是否报错
  • 驱动排障:结合设备相关关键字定位驱动加载失败
  • 巡检取证:把错误级别的内核日志定期采集归档

常用命令

常用命令
journalctl -k -b | tail -50                    # 本次启动的内核日志尾部
journalctl -k -p err -b --no-pager             # 只错误级及以上
dmesg -T | tail -30                            # 读缓冲区并显示可读时间
dmesg -T | grep -iE 'error|fail|timeout'       # 在缓冲区里筛关键字
journalctl -k -b -1 --no-pager | tail -40      # 上一次启动的内核日志
cat /proc/sys/kernel/dmesg_restrict            # 为 1 表示仅特权用户可读

常见关键字读法

关键字含义排查方向
Out of memory内存不足触发进程终止核对内存与上限设置,确认被杀进程
I/O error块设备读写报错检查磁盘、线缆与存储链路
link is not ready网卡链路未就绪检查物理连接与网卡配置
Call Trace内核调用栈结合上下文定位触发路径
soft lockup某处理器长时间被占用结合负载与驱动版本分析
EXT4-fs error文件系统报错优先保护数据,安排检查修复
缓冲区容量有限,新的内核消息会覆盖旧记录,重启后内容也会清空。要查更早的内核日志必须依赖日志服务的落盘数据,否则关键线索可能在重启后消失。
普通用户看不到内核日志时,先确认是不是访问限制导致的:系统可以通过内核参数限制读取权限。此时不要误判为「没有记录」,用具备权限的账号复核一次;排查硬件与驱动问题时优先看错误级别,再决定是否展开全量。

易错点

  • 只用缓冲区读取且不加可读时间选项,时间戳难以换算,跨系统对账时容易误判先后顺序
  • 缓冲区被新日志覆盖后才发现没落盘,关键的内核报错已无法回溯
  • 普通用户读不到内核日志就认为没有异常,实际是访问权限限制,需用特权账号复核
  • 看到设备报错关键词就直接更换硬件,未先排除线缆、供电与驱动版本等更常见原因

数据来源与参考

  • man 1 dmesg
  • man 1 journalctl(-k)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌