美文网首页Shell编程
Linux dmesg命令介绍

Linux dmesg命令介绍

作者: 煎鱼不可能有BUG | 来源:发表于2018-05-31 17:03 被阅读183次

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

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

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

    默认显示选项

    dmesg
    

    这个是Mac下的dmesg命令:

    image

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

    image

    需要注意的是,某些情况下(如在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"
    

    然后输出大概如下:

    image

    读后删选项

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

    dmesg -C
    

    输出日志显示颜色

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

    dmesg -L
    

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

    只输出特定类型的信息

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

    dmesg --facility=daemon
    

    效果如下:

    image

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

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

    只输出特定级别的信息

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

    dmesg --level=err,warn
    

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

    image

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

    显示时间戳

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

    dmesg -T
    
    image

    相信我,舒服多了。

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

    dmesg -Tx
    
    image

    显示原始数据

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

    dmesg -r
    
    image

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

    先这样吧

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

    相关文章

      网友评论

        本文标题:Linux dmesg命令介绍

        本文链接:https://www.haomeiwen.com/subject/kyzqsftx.html