如何在linux上使用dmesg命令

dmesg命令允许您窥视Linux启动进程的隐藏世界。与“故障查找者的朋友”一起查看和监视来自内核自己的环形缓冲区的硬件设备和驱动程序消息...

dmesg命令允许您窥视Linux启动进程的隐藏世界。与“故障查找者的朋友”一起查看和监视来自内核自己的环形缓冲区的硬件设备和驱动程序消息

linux的环形缓冲区工作原理

在Linux和Unix类计算机中,启动和启动是计算机通电时发生的事件序列的两个不同阶段。

引导进程(BIOS或UEFI、MBR和GRUB)将系统初始化到内核加载到内存并连接到初始ramdisk(initrd或initramfs)的点,然后启动systemd。

然后启动进程拿起指挥棒,完成操作系统的初始化。在初始化的早期阶段,诸如syslogd或rsyslogd之类的日志守护程序还没有启动和运行。为了避免在这个初始化阶段丢失明显的错误消息和警告,内核包含一个环形缓冲区,它将其用作消息存储。

环形缓冲区是为消息保留的内存空间。它设计简单,尺寸固定。当邮件已满时,较新的邮件将覆盖最旧的邮件。从概念上讲,它可以被认为是一个“循环缓冲区”

内核环形缓冲区存储诸如设备驱动程序的初始化消息、来自硬件的消息和来自内核模块的消息等信息。因为它包含这些低级启动消息,所以环形缓冲区是开始调查硬件错误或其他启动问题的好地方。

但不要空手而归。带上dmesg。

dmesg命令

dmesg命令允许您查看存储在环形缓冲区中的消息。默认情况下,您需要使用sudo来使用dmesg。

sudo dmesg

如何在linux上使用dmesg命令

环形缓冲区中的所有消息都显示在终端窗口中。

如何在linux上使用dmesg命令

那是一场洪水。显然,我们需要做的是少用管道输送:

sudo dmesg | less

如何在linux上使用dmesg命令

现在我们可以在消息中滚动查找感兴趣的项目。

如何在linux上使用dmesg命令

您可以使用less中的搜索功能来定位和突出显示您感兴趣的项目和术语。按less中的正斜杠“/”键启动搜索功能。

相关:如何在Linux上使用less命令

不再需要sudo

如果希望避免每次使用dmesg时都必须使用sudo,可以使用以下命令。但是,请注意:它允许任何拥有您的计算机用户帐户的人使用dmesg,而不必使用sudo。

sudo sysctl -w kernel.dmesg_restrict=0

如何在linux上使用dmesg命令

强制颜色输出

默认情况下,dmesg可能被配置为生成彩色输出。如果不是,您可以告诉dmesg使用-L(color)选项对其输出着色。

sudo dmesg -L

如何在linux上使用dmesg命令

要强制dmesg始终默认为彩色显示,请使用以下命令:

sudo dmesg --color=always

如何在linux上使用dmesg命令

人类时间戳

默认情况下,dmesg使用自内核启动以来秒和纳秒的时间戳表示法。要以更人性化的格式呈现,请使用-H(human)选项。

sudo dmesg -H

如何在linux上使用dmesg命令

这导致两件事发生。

如何在linux上使用dmesg命令

  • 输出自动以较少的单位显示。
  • 时间戳以分钟分辨率显示带有日期和时间的时间戳。每分钟中发生的消息都用从该分钟开始的秒和纳秒来标记。

可读时间戳

如果您不需要纳秒精度,但确实希望时间戳比默认值更易于读取,请使用-t(人类可读)选项。)有点困惑。-H是“人类”选项,-T是“人类可读”选项。)

sudo dmesg -T

如何在linux上使用dmesg命令

时间戳呈现为标准日期和时间,但分辨率降低到一分钟。

如何在linux上使用dmesg命令

一分钟内发生的一切都有相同的时间戳。如果你只关心事件的顺序,这就足够了。另外,请注意,您在命令提示符下返回。此选项不会自动调用less。

观看现场活动

要在消息到达内核环形缓冲区时查看消息,请使用--follow(等待消息)选项。那句话可能有点奇怪。如果环形缓冲区用于存储启动序列中发生的事件的消息,那么一旦计算机启动并运行,实时消息如何到达环形缓冲区?

任何导致连接到计算机的硬件发生更改的操作都会导致消息被发送到内核环形缓冲区。更新或添加内核模块,您将看到关于这些更改的环形缓冲区消息。如果**USB驱动器或连接或断开蓝牙设备,您将在dmesg输出中看到消息。即使是虚拟硬件也会导致新消息出现在环形缓冲区中。启动一个虚拟机,您将看到新信息到达环形缓冲区。

sudo dmesg --follow

如何在linux上使用dmesg命令

请注意,不会返回到命令提示符。当出现新消息时,dmesg将在终端窗口的底部显示这些消息。

如何在linux上使用dmesg命令

即使装载CD-ROM磁盘也被视为一种变化,因为您已经将CD-ROM磁盘的内容嫁接到目录树上。

如何在linux上使用dmesg命令

要退出实时提要,请按Ctrl+C。

检索最后十条消息

使用tail命令检索最后十条内核环缓冲区消息。当然,您可以检索任意数量的消息。十只是我们的例子。

sudo dmesg | last -10

如何在linux上使用dmesg命令

最后十条消息将被检索并在终端窗口中列出。

如何在linux上使用dmesg命令

搜索特定术语

通过grep将dmesg的输出管道化,以搜索特定的字符串或模式。在这里,我们使用-i(忽略大小写)选项,以便忽略匹配字符串的大小写。我们的结果将包括“u**”和“u**”以及任何其他小写和大写的组合。

sudo dmesg | grep -i u**

如何在linux上使用dmesg命令

突出显示的搜索结果是大写和小写的。

如何在linux上使用dmesg命令

我们可以隔离包含对系统sda上第一个SCSI硬盘的引用的消息。(实际上,sda现在也用于第一个SATA硬盘驱动器和USB驱动器。)

sudo dmesg | grep -i sda

如何在linux上使用dmesg命令

所有提到sda的消息都会被检索并在终端窗口中列出。

如何在linux上使用dmesg命令

要使grep一次搜索多个术语,请使用-E(扩展正则表达式)选项。必须在带引号的字符串中提供搜索项,在搜索项之间使用管道“|”分隔符:

sudo dmesg | grep -E "memory|tty|dma"

如何在linux上使用dmesg命令

任何提到任何搜索词的消息都会列在终端窗口中。

如何在linux上使用dmesg命令

使用日志级别

记录到内核环形缓冲区的每条消息都有一个附加级别。级别表示消息中信息的重要性。级别为:

  • 紧急情况:系统无法使用。
  • 警告:必须立即采取行动。
  • 暴击:临界条件。
  • 错误:错误条件。
  • 警告:警告条件。
  • 注意:正常但重要的情况。
  • 信息:信息。
  • 调试:调试级消息。

通过使用-l(level)选项并将级别的名称作为命令行参数传递,我们可以让dmesg提取与特定级别匹配的消息。要仅查看“信息”级消息,请使用以下命令:

sudo dmesg -l info

如何在linux上使用dmesg命令

列出的所有消息都是信息性消息。它们不包含错误或警告,只是有用的通知。

如何在linux上使用dmesg命令

在一个命令中组合两个或多个日志级别以检索多个日志级别的消息:

sudo dmesg -l debug,notice

如何在linux上使用dmesg命令

dmesg的输出是每个日志级别的消息的混合:

如何在linux上使用dmesg命令

设施类别

dmesg消息分为称为“设施”的类别。设施列表为:

  • 内核:内核消息。
  • 用户:用户级消息。
  • 邮件:邮件系统。
  • 守护程序:系统守护程序。
  • 身份验证:安全/授权消息。
  • syslog:内部syslogd消息。
  • 行打印机子系统。
  • 新闻:网络新闻子系统。

我们可以要求dmesg过滤其输出,以便只显示特定设施中的消息。为此,我们必须使用-f(facility)选项:

sudo dmesg -f daemon

如何在linux上使用dmesg命令

dmesg列出终端窗口中与守护进程相关的所有消息。

如何在linux上使用dmesg命令

正如我们对级别所做的那样,我们可以要求dmesg一次列出来自多个设施的消息:

sudo dmesg -f syslog, daemon

如何在linux上使用dmesg命令

输出是syslog和daemon日志消息的混合。

如何在linux上使用dmesg命令

结合设施和水平

x(decode)选项使dmesg将设施和级别显示为每行的可读前缀。

sudo dmesg -x

如何在linux上使用dmesg命令

在每条线的起点可以看到设施和水平:

如何在linux上使用dmesg命令

第一个突出显示的部分是来自“kernel”工具的消息,级别为“notice”。第二个突出显示的部分是来自“kernel”工具的消息,级别为“info”

很好,但是为什么?

简言之,故障查找。

如果您遇到硬件无法识别或无**常工作的问题,dmesg可能会对该问题有所帮助。

  • 使用dmesg检查从最高级别到每个较低级别的消息,查找提到硬件项或可能与问题有关的任何错误或警告。
  • 使用dmesg搜索对适当设施的任何提及,以查看它们是否包含任何有用的信息。
  • 通过grep传递dmesg并查找相关字符串或标识符,如产品**商或型号。
  • 通过grep引导dmesg,并查找诸如“gpu”或“storage”之类的通用术语,或者诸如“failure”、“failed”或“unable”之类的术语。
  • 使用--follow选项并实时查看dmesg消息。

狩猎愉快。

  • 发表于 2021-04-02 21:09
  • 阅读 ( 226 )
  • 分类:互联网

你可能感兴趣的文章

如何在linux上安装和使用powershell

... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 307 )

如何在android和termux上使用linux命令行

...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...

  • 发布于 2021-03-18 07:26
  • 阅读 ( 373 )

如何在windows10上获得linux bash shell

... 如何在windows10上安装linux bash shell ...

  • 发布于 2021-03-21 11:48
  • 阅读 ( 287 )

linux下如何重命名文件

要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...

  • 发布于 2021-03-22 02:48
  • 阅读 ( 276 )

linux正在吃掉你的公羊吗?如何管理你的记忆

...的内存。为了理解到底发生了什么,我们必须看看Linux是如何管理内存的。 ...

  • 发布于 2021-03-23 08:31
  • 阅读 ( 314 )

如何在linux上使用groupadd管理用户组

... 相关:如何在Linux中更改密码 ...

  • 发布于 2021-03-26 17:15
  • 阅读 ( 185 )

如何在linux中添加用户

想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...

  • 发布于 2021-03-26 23:29
  • 阅读 ( 334 )

在linux中,“bash”是什么意思?

...在这篇短文中,我们将探讨Bash是什么,它做什么,以及如何开始使用它。 ...

  • 发布于 2021-03-28 13:14
  • 阅读 ( 452 )

如何检查linux内核和操作系统版本

...版本可以让您对安全更新做出重要决定。我们将向您展示如何找到这些,无论您使用哪个发行版。 滚动和点释放 你知道你在运行哪个版本的Linux吗?你能找到内核版本吗?Linux的滚动发行版,如Arch、Manjaro和openSUSE,经常使用自...

  • 发布于 2021-04-01 13:11
  • 阅读 ( 192 )

如何在linux上使用tmux(以及为什么它比screen更好)

...。 这一次,我们将专注于tmux。接下来,我们将介绍screen如何处理相同的特性或功能。 关于屏幕,只有一件事让我们恼火。我们到了以后再谈,看看tmux是否更好。 相关:如何使用Linux的screen命令 安装tmux 虽然screen通常在流行的Li...

  • 发布于 2021-04-02 05:16
  • 阅读 ( 231 )
maddi2468
maddi2468

0 篇文章

相关推荐