的DMESG.命令以系统最近的启动以来显示内核的消息缓冲区的内容。它显示了有关系统如何工作的详细信息以及它可能运行的问题您不会正常看到。这可能是很多数据,但有几个技巧用于解析它。
例如,即使下面查询的系统只有稍微超过三天,它也会收集超过一千行数据。
$ dmesg |WC -L 1034.
如果只键入DMESG.,您将看到所有可用的数据。Sudo访问不是必需的。的输出也可以通过管道传递DMESG.到更多的和较少的命令要扫描它或简单地将输出管制到一,但是命令本身提供了许多选项来从文件中选择最相关的信息。
$ dmesg | grep NIC [21.483886] e1000e 0000:00:19.0 enp0s25: NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx [27.504178] e1000e 0000:00:19.0 enp0s25: NIC Link is Down
当你第一次开始看时,你会注意到的一件事DMESG.输出是每行左边的编号。这些日期/时间以秒和纳秒表示,自上次启动以来。它们看起来是这样的:
[12.469099] [274011.884318]
上面的第一个日期表示表示自系统上次启动以来大约记录了12.5秒的数据。下面的计算告诉我们显示的第二个日期超过了三天。86400是一天中的秒数。
$ echo“scale = 2; 274011/86400”|BC 3.17.
更简单地查看日期/时间字段的方法是使用-T.或者-H将这些字段转换为日期和时代的选项,如我们用于看到的日期和时间。
$ dmesg -T | head -3[星期五Dec 3 08:52:34 2021] microcode: microcode更新早到修订0xa0b,日期= 2010-09-28[星期五Dec 3 08:52:34 2021] Linux版本5.15.4-101.fc34。x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (gcc) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021[Fri Dec 3 08:52:34 2021] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.15.4-101.fc34.x86_64 root=UUID=a9e33237-9114-44ae-afd5-8ddb231d301f ro rootflags=subvol=root rhgb quiet $ dmesg -H | head -4 [Dec 3 08:52] microcode: microcode updated early to revision 0xa0b, date = 2010-09-28 [ +0.000000] Linux version 5.15.4-101.fc34.x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021 [ +0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.15.4-101.fc34.x86_64 root=UUID=a9e33237-9114-44ae-afd5-8ddb231d301f ro rootflags=subvol=root rhgb quiet [ +0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
您可以使用如下所示的命令挑选与RAM,硬盘,USB驱动器和串行端口相关的详细信息。
$ dmesg | grep -i memory $ dmesg | grep -i dma $ dmesg | grep -i usb $ dmesg | grep -i tty
使用日志设施
你可以选择DMESG.内容基于生成消息的过程。支持的日志设施包括:
- kern - 内核消息
- 用户 - 随机用户级消息
- 邮件-邮件系统
- Daemon -系统的守护进程
- Auth - 安全/授权消息
- syslog - syslogd内部生成的消息
- LPR线打印机子系统
- 新闻-网络新闻子系统
正如您在下面的示例中看到的,一些命令将不显示输出,因为没有记录相关活动。
使用kern.
$ dmesg -f kern | head -2 [0.000000] microcode: microcode更新早到修订0xa0b,日期= 2010-09-28 [0.000000]Linux版本5.15.4-101.fc34。x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (gcc) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021
使用用户
$ dmesg -f user | head -2
使用邮件
$ DMESG -F邮件|头-2
使用守护进程
$ dmesg -f daemon | head -2 [1.772531] systemd[1]: systemd v248.9-1。Fc34运行在系统模式。(+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL + blutls +OPENSSL +ACL + blutls +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified) [1.784315] systemd[1]:检测架构x86-64。
使用auth
$ dmesg -f auth |头-2
使用syslog
$ dmesg -f syslog |头-2 [7.451957] Systemd-journald [192]:从PID 1(SystemD)接收到Sigterm。[9.575729] Systemd-journaldd [499]:收到的客户端请求刷新运行时记帐。
使用lpr
$ DMESG -F LPR |头-2
使用新闻
$ dmesg -f新闻|头-2
使用水平
的DMESG.命令还允许您按日志级别提取数据。这些包括:
- 应急系统无法使用
- 必须立即采取行动
- 临界临界条件
- err - 错误条件
- Warn—警告条件
- 注意 - 正常但重要的情况
- 信息,信息
- 调试-调试级别的消息
使用紧急情况
$ dmesg -l emerg | head -2
使用警报
$ dmesg -l alert | head -2
使用致命一击
$ dmesg -l crit | head -2
使用错
$ dmesg -l错误|Head -2 [6.580237] USB 2-2:设备描述符读/ 64,错误-110 [7.875161] SD 4:0:0:0:[SDC]没有找到缓存模式页面
使用警告
$ dmesg -l警告|头-2 [0.006843] ACPI BIOS警告(错误):FADT / PM1AEVENTBLOCK中的32 / 64X长度不匹配:32/8(20210730 / TBFADT-564)[0.006846] ACPI BIOS警告(错误):FADT中的32/64倍长度不匹配/ pm1acontrolblock:16/8(20210730 / tbfadt-564)
使用通知
$ dmesg -l notice | head -2 [0.000000] Linux版本5.15.4-101.fc34。x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (gcc) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) #1 SMP Tue Nov 23 18:58:50 UTC 2021 [0.157702] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/ vmlinux -5.15.4-101.fc34. x86_64 (mockbuild@bkernel02.iad2.fedoraproject.org) (gcc (gcc) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34)x86_64 root=UUID=a9e33237-9114- 44aee -afd5-8ddb231d301f ro rootflags=subvol=root rhgb quiet . x86_64 root=UUID=a9e33237-9114- 44aee -afd5-8ddb231d301f
使用INFO.
$ dmesg -l信息|HEAD -2 [0.000000]微代码:微码更新到修订版0xA0B,日期= 2010-09-28 [0.000000]命令行:boot_image =(hd0,msdos1)/vmlinuz-5.15.4-101.fc34.x86_64 root = uuid= A9E33237-9114-44AE-AFD5-8DDB231D301F Ro RootFlags = SubVol = Root Rhgb静止
使用调试
$ dmesg -l调试|头-2 [0.000888] E820:更新[MEM 0x00000000-0x00000FFF]可用==>保留[0.000891] E820:删除[MEM 0x000A0000-0x000FFFFFF]可用
包起来
的DMESG.命令提供了大量关于Linux系统如何运行以及您可能没有意识到的问题的详细信息。它还可以让您了解系统是如何工作的。