温馨提示×

linux dmesg日志如何导出

小樊
42
2026-10-24 02:00:37
栏目: 智能运维

在 Linux 中,dmesg 用于查看内核环形缓冲区(kernel ring buffer)的日志。导出 dmesg 日志有多种方式,下面按常见场景说明。


一、直接导出到文件(最常用)

1. 普通用户(有 sudo 权限)

sudo dmesg > dmesg.log

或追加时间信息:

sudo dmesg -T > dmesg.log
  • -T:显示人类可读时间(如 2026-01-15 10:20:30)

2. 导出并包含级别信息

sudo dmesg -T -H > dmesg.log
  • -H:更易读的格式(带时间戳和颜色标记,文件中可能含控制字符)

二、按级别 / 关键字过滤后导出

只导出错误和警告

sudo dmesg -T --level=err,warn > dmesg_err.log

按关键字过滤

sudo dmesg -T | grep usb > dmesg_usb.log

三、从系统日志中导出(推荐用于持久日志)

如果系统使用 systemd,内核日志通常也会被 journald 记录:

sudo journalctl -k > dmesg_journal.log

包含时间:

sudo journalctl -k --since "1 hour ago" > dmesg_recent.log

四、导出“开机以来所有内核日志”(即使被覆盖)

如果 dmesg 缓冲区已被覆盖,可以查看:

sudo cat /var/log/dmesg > dmesg_boot.log

(部分发行版存在,记录开机时内核日志)

或:

sudo cat /var/log/kern.log > kern.log

(Debian / Ubuntu)


五、实时导出(调试用)

sudo dmesg -w > dmesg_live.log
  • -w:实时监控并写入文件(Ctrl+C 停止)

六、常见问题

1. 提示 dmesg: permission denied

sudo sysctl kernel.dmesg_restrict=0

或修改:

echo 0 | sudo tee /proc/sys/kernel/dmesg_restrict

2. 日志太多怎么办

sudo dmesg -T | tail -n 500 > dmesg_tail.log

如果你能说明:

  • 使用的发行版(Ubuntu / CentOS / Arch 等)
  • 是想排查驱动、崩溃还是开机问题

我可以给你更精确的命令。

0 踩