Linux 命令: dmesg | uname

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

感谢您花时间阅读文章

收藏本站不迷路

/////往期精彩/////
Linux 命令:lsof(列出打开的文件)
Linux:系统调用 和 Strace
Linux 命令:PS(进程状态)

原文始发于微信公众号(滑翔的纸飞机):Linux 命令: dmesg | uname

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260986.html

(0)
土豆大侠的头像土豆大侠

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!