首页 > 编程知识 正文

如何在手机上使用wallpaper,如何在手机上使用wps

时间:2023-05-04 16:46:32 阅读:219910 作者:1315

看到一篇讲解 dmesg 很好的英文文章,这里翻译一下,以下是译文。

dmesg 命令可以让你更深入的了解 Linux 启动的潜在过程,可以从内核的环形缓冲区(ring buffer)查看并监视硬件设备和驱动消息。

一、Linux 环形缓冲区是如何工作的呢 ?

在 Linux 和类 Unix 系统中,引导和启动是计算机开机后,事件序列中两个不同的阶段。

引导过程(BIOS或UEFI,MBR和GRUB)会初始化系统,这时内核被加载进内存,并且连接到初始 ramdisk(initrd或initramfs),然后,systemd被启动。

然后,启动过程继续完成初始化操作系统的工作。在初始化阶段的早期,日志记录 daemons(例如:syslogd或rsyslogd)尚未启动及运行。为了避免在初始化阶段丢失明显的错误消息和警告,内核包含了一个可以储存消息的环形缓冲区。

环形缓冲区是用于存储消息的内存空间,它设计简单,固定大小。当存储满时,最新的消息会覆盖最旧的消息,所以被称作是“环形缓冲区”。

内核环形缓冲区能够存储消息,比如:设备驱动程序的初始化消息,硬件消息以及内核模块消息。因为它包含低等级的启动消息,所以环形缓冲区非常适合于查看硬件错误或其它启动问题。

二、dmesg 命令

dmesg 命令可以查看环形缓冲区中的消息。默认情况下,执行 dmesg 需要添加 sudo。

$ sudo dmesg

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

通常会输出很多的消息,这可以通过 less 命令来解决:

$ sudo dmesg | less

这样,我们就可以滚动查找我们需要的内容。

你可以使用搜索功能来定位并高亮你想要搜索的内容,在 less 命令中使用 “/” 来进行搜索。

三、不使用 sudo 

如果你不想每次执行命令都要添加 sudo,可以进行如下设置。但是,要注意的是:这会让你计算机上的任何账户都不必使用 sudo 来执行 dmesg。

$ sudo sysctl -w kernel.dmesg_restrict=0

四、输出中添加颜色

默认情况下,dmesg 的输出带有颜色,如果不是这样,你可以在执行命令时添加 -L 参数。

$ sudo dmesg -L

为了强制执行 dmesg 命令时,默认有颜色输出,使用如下命令:

$ sudo dmesg --color=always

五、人性化时间戳

默认情况下,内核启动后,dmesg 使用时间戳记录秒和纳秒,如果想要更人性化的输出,可以使用 -H (human) 参数。

$ sudo dmesg -H

这会带来两个问题。

输出会自动显示更少的内容;时间戳带有日期和时间,并具有分钟分辨率。每分钟发生的消息都从该分钟的秒和纳秒算起。

六、人们可读的时间戳

如果你并不需要十亿分之一秒的精度,但是你希望时间戳比默认时间戳更易于阅读,那就使用 -T (human readable) 参数(这里可能让你有点困惑,-H 是 “human” 参数,-T 是“human readable” 参数)。

$ sudo dmesg -T

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

一分钟内发生的所有事件都具有相同的时间戳。如果你只关心事件顺序,那这就足够了。另外,请注意,你将在命令提示符处转储回去,此操作不会自动减少调用。

七、查看活动的事件

为了查看到达内核环形缓冲区中的消息,可以使用 --follow(等待消息) 参数。这可能看起来有点陌生。如果使用环形缓冲区来存储启动序列期间事件的消息,那么,一旦计算机启动并运行,实时消息如何到达环形缓冲区中呢?

连接到计算机的硬件产生的任何变化都被发送到内核环形缓冲区中。在更新或添加内核模块时,你将会在环形缓冲区中看到相应事件的消息。 如果插入USB驱动器、连接或断开蓝牙设备,都会看到 dmesg 消息输出。甚至虚拟硬件也将导致新消息出现在环形缓冲区中。 启动虚拟机,您将看到环形缓冲区中产生新消息。

$ sudo dmesg --follow

请注意:执行命令后不会返回到命令提示符下。当新消息出现时,它们将显示在 dmesg 终端窗口的底部。

甚至挂载一个 CD-ROM 磁盘也会产生日志,因为挂载后,CD-ROM磁盘的内容就会进入到目录树中。

要退出 dmesg 实时消息,请使用 Ctrl+C。

八、检索最近的 10 条消息

使用 tail 命令检索最后十个内核环形缓冲区消息。当然,你也可以检索任意数量的消息。 检索十个只是一个例子。

$ sudo dmesg | tail -10

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

九、搜索特定术语

使用 grep 将 dmesg 的输出通过管道传输以搜索特定的字符串或模式。在这里,我们使用 -i(忽略大小写)参数,以便忽略匹配字符串的大小写。 我们的结果将包括“usb”和“USB”以及任何其他大小写组合,如下所示:

$ sudo dmesg | grep -i usb

高亮显示了搜索出的结果:

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

$ sudo dmesg | grep -i sda

所有关于sda的消息都将被检索,并在终端窗口中列出。

想要使用 grep 一次搜索多个关键词,请使用 -E(扩展正则表达式)参数。 你必须在带引号的字符串中使用管道“ |”符号分隔不同的搜索词,如下所示:

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

终端窗口中会列出与任意搜索词相匹配的内容,如下所示:

十、使用日志级别

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

emerg : 系统无法使用;alert : 必须立即采取措施;crit : 严重的情况;err : 错误;warn :  警告;notice : 正常但是重要的情况;info : 消息;debug : 调试信息;

通过使用 -l(level)参数并将级别的名称作为命令行参数传递,可以提取与特定级别匹配的消息。 如果查看“informational”级别的消息,请使用如下命令:

$ sudo dmesg -l info

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

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

$ sudo dmesg -l debug,notice

dmesg的输出是所查询日志级别的消息的混合:

十一、设备类别

dmesg消息分可以根据“设备”的类别分成多个组“设备”。 设备的清单是:

kern : 内核消息;user : 用户级别的消息;mail : 邮件系统;daemon : 系统守护程序;auth : 安全/授权消息;syslog : 内部 syslogd 消息;lpr : 行式打印机子系统;news : 网络消息子系统;

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

$ sudo dmesg -f daemon

dmesg 在终端窗口中列出了与守护程序有关的所有消息。

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

$ sudo dmesg -f syslog,daemon

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

十二、设施与等级相结合

-x(解码)选项使dmesg将设备和级别显示为人性化可读的每行的前缀。

$ sudo dmesg -x

在每一行的开头可以看到具体的设备和级别:

在上图中,第一行突出显示的部分是来自“kernel”设备的消息,级别为“notice”。 第二行突出显示的部分是来自“kernel”设备的消息,级别为“info”。

这太好了,但是为什么呢?

简而言之,就是发现故障。

如果你遇到某个硬件无法识别或行为不正常的问题,则dmesg可能会对该问题有所帮助。

使用 dmesg 可以查看从最高级别到每个较低级别的消息,以查找涉及硬件的任何错误或警告,或者可能的相关问题;使用 dmesg 搜索命令列出的设备,以查看它们是否包含任何有用的信息;将 dmesg 产生的消息通过管道传递给命令 grep,以便查找相关的字符串或标识符,例如产品制造商或型号;将 dmesg 产生的消息通过管道传递给命令 grep,以便查找通用术语,比如:“ gpu”、“ storage”、“ failure”、“ failed”或“ unable”;使用 --follow 参数,实时查看 dmesg 消息。

声明:以上为译文,如若侵权请联系作者删除!

原文链接:How to Use the dmesg Command on Linux

CSS中div滚动条样式如何设置

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。