温馨提示×

linux dmesg怎样导出日志

小樊
49
2026-10-21 00:52:00
栏目: 智能运维

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


一、基本导出方式

1. 直接重定向到文件(最常用)

dmesg > dmesg.log

或

dmesg | tee dmesg.log

(tee 会同时显示并保存)


二、带时间戳导出(推荐)

2. 人类可读时间

dmesg -T > dmesg.log

示例输出:

[Fri Jun 21 10:32:11 2024] usb 1-1: new high-speed USB device

3. 秒级时间戳(从系统启动开始)

dmesg -t > dmesg.log

三、以 root 权限导出(很重要)

某些系统普通用户无法读取 dmesg:

sudo dmesg > dmesg.log

或

sudo dmesg -T > dmesg.log

四、导出“上一次启动”的日志(系统已重启)

如果内核启用了 printk 持久化(较新 systemd 系统):

sudo journalctl -k > dmesg_last_boot.log

或指定某次启动:

sudo journalctl -k -b -1 > dmesg_prev_boot.log
  • -b -1:上一次启动
  • -b -2:再上一次

五、实时持续导出(调试用)

sudo dmesg -w > dmesg_live.log

(-w = watch,实时跟踪内核日志)

按 Ctrl+C 停止。


六、导出并压缩(日志较大时)

sudo dmesg -T | gzip > dmesg.log.gz

查看:

zcat dmesg.log.gz

七、常见注意事项

  1. dmesg 只显示内核启动后的日志
  2. 系统重启后 dmesg 内容会清空(除非用 journald)
  3. 若提示 dmesg: read kernel buffer failed: Operation not permitted
    解决:
    sudo sysctl kernel.dmesg_restrict=0
    

如果你告诉我:

  • 是 CentOS / Ubuntu / Alpine 哪种系统
  • 是想 排查故障 / 提交 bug / 长期保存

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

0 踩