---
title: 'Linux dmesg命令介绍'
pubDate: 2018-05-22
tags:
  - 'debug'
  - 'dmesg'
  - 'linux'
description: 'Linux dmesg命令介绍'
---

dmesg命令是用来在[Unix-like](https://baike.baidu.com/item/%E7%B1%BBUNIX%E7%B3%BB%E7%BB%9F/4336219?fr=aladdin 'Unix-like')系统中显示内核的相关信息的。dmesg全称是display message (or display driver)，即显示信息。

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

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

## 默认显示选项

```
dmesg
```

这个是Mac下的dmesg命令：

![](https://source.mkshell.com/15270039201978.jpg)

这是Linux（树莓派）下的dmesg命令：

![](https://source.mkshell.com/15270039867246.jpg)

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

然后输出大概如下：

![](https://source.mkshell.com/15270043770441.jpg)

## 读后删选项

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

```
dmesg -C
```

## 输出日志显示颜色

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

```
dmesg -L
```

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

## 只输出特定类型的信息

比如说，我只想输出守护进程的信息：

```
dmesg --facility=daemon
```

效果如下：

![](https://source.mkshell.com/15270048849324.jpg)

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

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

## 只输出特定级别的信息

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

```
dmesg --level=err,warn
```

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

![](https://source.mkshell.com/15270051438942.jpg)

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

## 显示时间戳

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

```
dmesg -T
```

![](https://source.mkshell.com/15270064538788.jpg)

相信我，舒服多了。

更进一步，把级别也显示出来：

```
dmesg -Tx
```

![](https://source.mkshell.com/15270065351760.jpg)

## 显示原始数据

dmesg默认输出的信息是处理过的，想要显示原始数据（raw data）：

```
dmesg -r
```

![](https://source.mkshell.com/15270067233801.jpg)

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

_先这样吧_

若有错误之处请指出，更多地关注[煎鱼](http://www.jianyujianyu.com)。
