做什么
内核环形缓冲(kernel ring buffer)——记录内核 / 硬件相关消息:硬盘错误、内存不足 OOM、设备插拔、网卡上下、模块加载等。
实战
sudo dmesg # 全部
sudo dmesg -T # ★ 带可读时间戳
sudo dmesg --level=err # 仅错误
sudo dmesg -w # 实时跟踪
sudo dmesg | tail -50 # 最近
sudo dmesg --since "1 hour ago" # 时间过滤
关键参数
| 参数 |
含义 |
-T |
可读时间戳 |
-w |
follow(实时) |
-l err |
仅错误级别 |
-l warn,err |
多个级别 |
--level=err |
同上 |
-H |
human-readable 输出 |
-c |
看完清空缓冲(要 root) |
典型用途
1. 插 U 盘 / 新硬盘后看识别
sudo dmesg | tail -20
# [12345.678] usb 1-2: new high-speed USB device number 3
# [12345.789] usb-storage 1-2:1.0: USB Mass Storage device detected
# [12345.890] scsi host6: usb-storage 1-2:1.0
# [12346.123] sd 6:0:0:0: [sdc] ...
2. OOM Killer 杀进程的记录
sudo dmesg -T | grep -i "killed process"
# [Fri May 9 10:23:45 2026] Out of memory: Killed process 12345 (myapp) ...
3. 硬盘错误
sudo dmesg | grep -i "i/o error\|sector error"
sudo dmesg | grep -i "ata\|sata"
4. 网卡上下
sudo dmesg | grep eth0
sudo dmesg | grep "Link is"
5. SELinux 拒绝
sudo dmesg | grep -i "denied"
dmesg vs journalctl
|
dmesg |
journalctl -k |
| 来源 |
内核 ring buffer |
journal 数据库 |
| 持久 |
重启丢(除非配持久 journal) |
可持久 |
| 速度 |
极快 |
较慢 |
| 推荐 |
实时查 |
历史查 |
journalctl -k -b -1 # 上次 boot 的内核日志(dmesg 看不到)
坑
- dmesg 默认时间戳是开机后秒数——不直观,加
-T 才是人可读
- ring buffer 满了会覆盖旧的——历史看 journal
- 没 sudo 看不到(多数现代 Linux)—— 较老版本可能不要