Linux 命令: dmesg | uname
  LeahPL0BlrQo 2023年11月19日 19 0

1. 写在前面

本文主要介绍:Linux “dmesg”和 “uname” 命令。dmesg 是 Linux 中一个基于命令行的实用程序,它显示从内核环形缓冲区检索到的与内核相关的消息。

公众号: 滑翔的纸飞机

在系统的启动过程中,屏幕上会显示许多消息,我们可以看到内核检测到的硬件设备。这些消息对于在设备发生故障时进行诊断非常重要。当我们连接或断开系统上的硬件设备时,使用 dmesg,我们可以即时检测信息。事实上,当我们在终端中执行 dmesg 命令时,从内核环形缓冲区接收到的所有消息都会显示在屏幕上。

2. 内核环形缓冲区(Kernel Ring Buffer)

内核环形缓冲区是一种数据结构,用于记录与内核运行相关的信息。它是一种特殊的缓冲区,大小恒定,因此在接收新信息时会自动删除旧信息。

实际上,在boot阶段,所有的应用还没有启动,syslogd也未启动,这时内核日志是非常重要的信息。 除了设备初始化日志、内核模块日志,它还会包含一些应用崩溃的相关信息记录,了解dmesg的使用对于调试程序相当重要。

3. dmesg(诊断信息)

dmesg 命令在类 Unix 系统上显示与内核相关的信息,从 /proc/kmsg(提供了到内核环形缓冲区的接口,并且只能由一个进程打开) 虚拟文件中读取内核生成的消息。它用于控制内核环形缓冲区。使用 dmesg 命令可以随时查看环形缓冲区的内容,其内容也会保存到 /var/log/dmesg 文件中。

root@dev:~# dmesg | less

[1235469.779191] br-1a43d09b35e3: port 7(vethf16bbb4) entered forwarding state
[1235470.265144] eth0: renamed from veth949e906
[1235470.278600] IPv6: ADDRCONF(NETDEV_CHANGE): veth622d4ce: link becomes ready
[1235470.278816] br-1a43d09b35e3: port 3(veth0e635e8) entered disabled state
[1235470.278881] br-1a43d09b35e3: port 6(vethab5a006) entered disabled state
[1235470.278930] br-1a43d09b35e3: port 7(vethf16bbb4) entered disabled state
... ...

要实时查看 dmesg 命令的输出,请使用 -w / --follow 选项,例如命令:dmesg -H -T --follow

3.1 dmesg 重要选项

dmesg -h

Options:
 -f, --facility <list>       选项允许你将输出限制为特定的设备,该选项接受一个或多个逗号分隔的功能,例如,要仅显示内核和系统守护程序消息,可以使用:dmesg -f kern,daemon
 -k, --kernel                显示内核消息
 -l, --level <list>          输出指定日志级别
 -S, --syslog                强制使用syslog而不是/dev/kmsg
 -u, --userspace             显示用户空间信息
 -w, --follow                实时查看 dmesg 命令的输出
 -T, --ctime                 显示可读的时间戳

更多选项可以:man dmesg 或者 dmesg -h

3.2 支持来自以下设施的日志

  • kern — kernel messages 内核信息
  • user — random user-level messages 用户级消息
  • mail — mail system 邮件系统
  • daemon — system daemons 系统守护进程
  • auth — security/authorization messages 安全/授权信息
  • syslog — messages generated internally by syslogd 由 syslogd 内部生成的消息
  • lpr — line printer subsystem 打印机子系统
  • news — network news subsystem 网络新闻子系统

3.3 按设施过滤日志

按设施过滤日志:

dmesg -f syslog | less     

[   10.250252] systemd-journald[355]: Received client request to 
flush runtime journal.

...
...

3.4 支持以下日志级别(优先级)

  • emerg — system is unusable 系统无法使用
  • alert — action must be taken immediately 必须立即采取行动
  • crit — critical conditions 危急
  • err — error conditions 错误
  • warn — warning conditions 警告
  • notice — normal but significant condition 正常但重要
  • info — informational 基本信息
  • debug — debug-level messages 调试消息

3.5 按标签过滤日志

按标签过滤日志:

root@dev:~# dmesg -l info
[1236289.210050] br-1a43d09b35e3: port 10(vethe43ec92) entered disabled state
[1236289.217221] device vethe43ec92 left promiscuous mode
[1236289.217227] br-1a43d09b35e3: port 10(vethe43ec92) entered disabled state
[1236293.029618] br-1a43d09b35e3: port 8(veth96410fd) entered disabled state
...
...

按多个日志级别筛选:

root@dev:~# dmesg -l warn,notice

3.6 使用 "grep "过滤

root@dev:~# dmesg | grep -i memory

-----------------------------------------------------------------------------
[    0.016691] check: Scanning 1 areas for low memory corruption
[    0.017233] ACPI: Reserving FACP table memory at [mem 0x7ffe1e29-0x7ffe1f1c]
[    0.017234] ACPI: Reserving DSDT table memory at [mem 0x7ffe0040-0x7ffe1e28]
[    0.017235] ACPI: Reserving FACS table memory at [mem 0x7ffe0000-0x7ffe003f]
[    0.017236] ACPI: Reserving APIC table memory at [mem 0x7ffe1f1d-0x7ffe1f94]
[    0.017237] ACPI: Reserving MCFG table memory at [mem 0x7ffe1f95-0x7ffe1fd0]
[    0.017238] ACPI: Reserving WAET table memory at [mem 0x7ffe1fd1-0x7ffe1ff8]
...
...

3.7 显示前后 “n” 条消息

显示前 “n” 条消息:

root@dev:~# dmesg | head -5
[1290812.104068] br-097d3c3ce0f2: port 4(vetha20f967) entered forwarding state
[1290812.217531] br-097d3c3ce0f2: port 4(vetha20f967) entered disabled state
[1290812.326985] br-097d3c3ce0f2: port 7(vetha5c5ffd) entered blocking state
[1290812.326988] br-097d3c3ce0f2: port 7(vetha5c5ffd) entered disabled state
[1290812.331357] device vetha5c5ffd entered promiscuous mode

显示后 “n” 条消息:

root@dev:~# dmesg | tail -4
[1386732.457280] br-b2618bd64406: port 10(veth531df63) entered disabled state
[1386732.464134] br-b2618bd64406: port 10(veth531df63) entered disabled state
[1386732.466799] device veth531df63 left promiscuous mode
[1386732.466804] br-b2618bd64406: port 10(veth531df63) entered disabled state

3.7 清除环形缓冲区

root@dev:~# sudo dmesg -C

只有 root 或具有 sudo 特权的用户才能清除缓冲区。

要在清除之前打印缓冲区内容,请使用 -c(--read-clear)选项:

root@dev:~# sudo dmesg -c

如果要在清除文件之前将当前 dmesg 日志保存到文件中,你可以将输出重定向到文件:

root@dev:~# dmesg > dmesg_messages

对于服务器,本操作请谨慎使用,清除后不会再恢复。下次再dmesg时就没有以前的日志了。

4. uname

uname 是一种 Linux 命令行实用程序,可显示基本的系统信息。

root@dev:~# uname
Linux

4.1 重要选项

>> uname --help

  -a, --all                print all information 输出所有信息
  -s, --kernel-name        print the kernel name 输出内核名称
  -n, --nodename           print the network node hostname 输出节点主机名
  -r, --kernel-release     print the kernel release 输出内核版本
  -v, --kernel-version     print the kernel version 输出内核版本
  -m, --machine            print the machine hardware name 输出硬件名称
  -p, --processor          print the processor type (non-portable) 输出处理器类型
  -i, --hardware-platform  print the hardware platform (non-portable)输出硬件平台
  -o, --operating-system   print the operating system 输出操作系统
      --version  output version information and exit 输出版本信息并退出


root@dev:~# uname -s
Linux

root@dev:~# uname -n
dev

root@dev:~# uname -r
5.4.0-165-generic

root@dev:~# uname -v
#182-Ubuntu SMP Mon Oct 2 19:43:28 UTC 2023

root@dev:~# uname -m
x86_64

root@dev:~# uname -p
x86_64

root@dev:~# uname -i
x86_64

root@dev:~# uname -o
GNU/Linux

root@dev:~# uname -a
Linux jpzhang-dev 5.4.0-165-generic #182-Ubuntu SMP Mon Oct 2 19:43:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

感谢您花时间阅读文章

关注公众号不迷路

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  6YY0QMPUXEwu   2023年12月10日   31   0   0 linux网卡
  Ex81gqy3LOX7   2023年12月07日   22   0   0 linux
  nIt0XG0acU8j   2023年12月11日   32   0   0 linuxhtop
  nIt0XG0acU8j   2023年12月09日   36   0   0 linuxsort