解读 Linux 内核日志(kernel log)是排查系统故障、性能问题和硬件异常的重要手段。下面从日志来源、查看方式、常见格式、关键字含义、实战解读几个方面系统说明。
Linux 内核通过 printk() 输出日志,级别从低到高大致是:
| 级别 | 名称 | 含义 |
|---|---|---|
| 0 | emerg | 系统不可用 |
| 1 | alert | 必须立即处理 |
| 2 | crit | 严重错误 |
| 3 | err | 错误 |
| 4 | warn | 警告 |
| 5 | notice | 正常但重要 |
| 6 | info | 信息 |
| 7 | debug | 调试 |
dmesg(最常用)dmesg
dmesg | tail -n 50
dmesg -T # 显示可读时间
dmesg -l err,warn
journalctl(systemd 系统)journalctl -k # 只看内核日志
journalctl -k -p err # 错误级别
journalctl -k --since "10 min ago"
/var/log/dmesg/var/log/messages(部分发行版)/var/log/syslog(Debian/Ubuntu)典型示例:
[ 2.345678] EXT4-fs (sda1): mounted filesystem with ordered data mode
[ 5.123456] eth0: link up, 1000 Mbps, full duplex
[ 123.456789] Out of memory: Kill process 2345 (java)
说明:
[时间]:系统启动后的秒数EXT4-fs, eth0):来源pci 0000:xx:PCI 设备枚举usb 1-1:USB 设备ata1.00:SATA 硬盘nvme0:NVMe 磁盘示例:
nvme nvme0: controller is down
→ NVMe 控制器异常,可能硬盘故障
Out of memory: Killed process 1234 (mysqld)
→ 内存耗尽,OOM Killer 杀进程
BUG: unable to handle page fault
→ 内核空指针或内存越界(严重 bug)
EXT4-fs error (sda1): ext4_find_entry: ...
→ 文件系统损坏
XFS (sdb): log I/O error
→ 磁盘 I/O 错误
soft lockup: CPU#3 stuck for 22s
→ CPU 软死锁(驱动或内核问题)
BUG: scheduling while atomic
→ 原子上下文调度错误(内核 bug)
eth0: link down
→ 网线断开
TCP: out of memory
→ 网络内存不足
[ 4521.12] INFO: task java:1234 blocked for more than 120 seconds
[ 4521.13] Call Trace:
→ 进程长时间阻塞(I/O 或锁问题)
[ 10.22] sd 0:0:0:0: [sda] Medium Error
[ 10.25] Buffer I/O error on dev sda1
→ 磁盘坏道或即将损坏
[ 3.45] iwlwifi 0000:03:00.0: firmware crash
→ WiFi 驱动固件崩溃
dmesg -T | tail 看最近异常dmesg | grep -i error
dmesg | grep -i oom
journalctl 和硬件日志如果你有具体的一段内核日志,可以直接贴出来,我可以帮你逐行解读并判断问题原因。