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 命令: dmesg | uname
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260986.html