dmesg命令是用来在Unix-like系统中显示内核的相关信息的。dmesg全称是display message (or display driver),即显示信息。

实际上,dmesg命令是从内核环形缓冲区中获取数据的。当我们在Linux上排除故障时,dmesg命令会十分方便,它能很好地帮我们鉴别硬件相关的error和warning。除此之外,dmesg命令还能打印出守护进程相关的信息,已帮助我们debug。

本文中,我们会讨论一下比较实用的几个dmesg具体命令。

默认显示选项

dmesg

这个是Mac下的dmesg命令:

这是Linux(树莓派)下的dmesg命令:

需要注意的是,某些情况下(如在Mac下),需要sudo。

如果太长了可以像以上一样后接管道和head命令,或后接管道和less或more。

显示和内存、硬盘、USB、TTY相关的信息

dmesg | grep -i memory
dmesg | grep -i dma
dmesg | grep -i usb
dmesg | grep -i tty

好吧,这个不应该算是dmesg的技巧,应该算是linux管道的技巧。

如果全都要,可以:

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

然后输出大概如下:

读后删选项

如果想要在读取dmesg后,删除已读的日志,可以加上-C选项:

dmesg -C

输出日志显示颜色

如果输出的日志是纯白或纯黑的,就会显得很不友善,想要colorful就可以加上-L选项:

dmesg -L

实际情况是,我试了一下根本没有显示颜色,而help里面还说color是默认开启的,迷惑中。

只输出特定类型的信息

比如说,我只想输出守护进程的信息:

dmesg --facility=daemon

效果如下:

其中facility选项还可以填入,kern、user、mail、daemon、auth、syslog、lpr、news。

奇怪,现在倒是默认地显示出颜色来了。

只输出特定级别的信息

有的时候我们只要要error以及warning,不要别的等级的信息,可以使用如下命令:

dmesg --level=err,warn

然后系统的error以及程序员都不看的warning就展示了出来:

level选项还可以填入别的等级,例如emerg、alert、crit、err、warn、notice、info、debug。

显示时间戳

需要注意到的是,dmesg命令默认的时间显示是从开机到log记录的时间,说实话,这样对于人类来说真的不方便,我们需要时间:

dmesg -T

相信我,舒服多了。

更进一步,把级别也显示出来:

dmesg -Tx

显示原始数据

dmesg默认输出的信息是处理过的,想要显示原始数据(raw data):

dmesg -r

根据原始数据,我们不难猜出,<6>就是info级别、<5>就是notice级别等等的转译细节。

先这样吧

若有错误之处请指出,更多地关注煎鱼

Categories: Linux

1 Comment

逗妇乳 · 05/27/2018 at 17:42

这个命令天天敲,我现在有点怕这个命令

发表评论

电子邮件地址不会被公开。 必填项已用*标注