命令介绍
dmesg命令用于显示开机信息,运行 dmesg 命令需要 root 权限,dmesg 命令在多数基于 Linux 和 Unix 的操作系统中都可以使用。
dmesg 命令提供的信息在设备故障诊断时非常重要,因为 dmesg 命令输出的信息非常多,因此我们常需要配合管道、查询命令一起使用,或者将信息输出到文本中进行检索分析。
kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息也会保存在 /var/log 目录中名称为 dmesg 的文件里。
语法
1 2 3 4 5
| $ dmesg [-cn][-s <缓冲区大小>]
|
dmesg 定义了八个不通的错误级别,可以使用 dmesg --level=err,warn
设定,具体的级别如下:
- emerg : 系统无法使用
- alert :必须立即采取行动
- crit :危急的错误
- err :一般错误
- warn :警告类型的错误
- notice :正常信息但值得关注
- info :普通信息
- debug : 调试级别的信息
看一下具体的例子:
1 2 3 4 5 6 7 8 9
| $ sudo dmesg --level=err [ 2.060380] piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled! [ 2.635310] sd 2:0:0:0: [sda] Assuming drive cache: write through
$ sudo dmesg --level=err -T [Tue Feb 2 05:16:33 2021] piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled! [Tue Feb 2 05:16:33 2021] sd 2:0:0:0: [sda] Assuming drive cache: write through
|
我们还可以通过搜索关键字的方式,只查看某一类组件的启动信息。如下代码分别显示内容、硬盘、USB以及TTY相关的启动信息。
1 2 3 4
| $ dmesg | grep -i memory $ dmesg | grep -i dma $ dmesg | grep -i usb $ dmesg | grep -i tty
|
还可以按照另外一个维度,分别输出特定类型的信息,包括:daemon、kern、user、mail、auth、syslog等。
1 2 3 4 5 6 7 8 9
| $ dmesg --facility=kern [ 0.000000] Linux version 5.9.0-kali1-amd64 (devel@kali.org) (gcc-10 (Debian 10.2.0-15) 10.2.0, GNU ld (GNU Binutils for Debian) 2.35.1) 2 (2020-10-29) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-5.9.0-kali1-amd64 root=/dev/mapper/qking--vg-root ro quiet splash [ 0.000000] Disabled fast string operations [ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' ...
|
熟练使用 dmesg 命令,能够让我们在日常运维及更深层次的内核调试中了解更多的信息,上面总结的内容希望能够帮助到各位。
参考资料
- dmesg七种用法
- Linux dmesg命令
- System hangs when a target reset is issued by hpsa