Linux dmesg命令介绍
Linux dmesg(英文全称:display message)命令用于显示或控制内核环形缓冲区的内容。内核环形缓冲区是一个内存空间,用于存储内核在启动和运行过程中产生的各种消息,如设备驱动的初始化信息、硬件的错误信息、内核模块的加载和卸载信息等。这些信息对于诊断和解决硬件或启动问题非常有用。dmesg命令可以让你查看、清除、过滤或颜色化这些信息。
Linux dmesg命令适用的Linux版本
dmesg命令是一个标准的Linux命令,几乎所有的Linux发行版都支持它。但是,不同的Linux版本可能有不同的dmesg选项或功能。例如,一些较新的Linux版本(如Ubuntu 20.04)支持使用--human
选项来显示人类可读的时间戳,而一些较旧的Linux版本(如CentOS 7)则不支持。如果你想使用dmesg的某些特定功能,你可以先查看你的Linux版本的dmesg手册页,以确认是否支持。你可以使用以下命令来查看dmesg的手册页:
[linux@bashcommandnotfound.cn ~]$ man dmesg
Linux dmesg命令的基本语法
dmesg命令的基本语法格式如下:
dmesg [options]
其中,options
是可选的参数,用于指定dmesg的行为或输出格式。dmesg命令有很多选项,我们将在下面的章节中介绍一些常用的选项。
Linux dmesg命令的常用选项说明
dmesg命令的选项有很多,我们在这里只介绍一些常用的选项,如果你想了解更多的选项,你可以查看dmesg的手册页或使用--help
选项来获取帮助信息。以下是一些常用的dmesg选项:
选项 | 说明 |
---|---|
-c | 显示并清除环形缓冲区中的消息 |
-C | 清除环形缓冲区中的消息,不显示 |
-d | 解码双重换行符 |
-D | 禁止打印到控制台 |
-E | 允许打印到控制台 |
-F | 从指定的文件中读取消息,而不是环形缓冲区 |
-f | 强制显示所有消息,即使它们已经打印到控制台 |
-H | 使用人类可读的时间戳(需要较新的Linux版本支持) |
-k | 只显示内核消息 |
-l | 只显示指定的日志级别的消息 |
-n | 设置控制台的日志级别 |
-r | 打印原始消息,不添加前缀 |
-s | 设置环形缓冲区的大小 |
-T | 使用本地时间戳 |
-t | 不打印时间戳 |
-u | 打印用户空间消息 |
-w | 实时监视环形缓冲区中的消息 |
-x | 打印设施和级别 |
Linux dmesg命令的实例
下面是一些使用dmesg命令的实例,你可以根据自己的需要来尝试或修改这些命令。
- 显示环形缓冲区中的所有消息
[linux@bashcommandnotfound.cn ~]$ dmesg
- 显示并清除环形缓冲区中的所有消息
[linux@bashcommandnotfound.cn ~]$ dmesg -c
- 只显示内核消息,不显示用户空间消息
[linux@bashcommandnotfound.cn ~]$ dmesg -k
- 只显示错误和警告级别的消息
[linux@bashcommandnotfound.cn ~]$ dmesg -l err,warn
- 使用人类可读的时间戳(需要较新的Linux版本支持)
[linux@bashcommandnotfound.cn ~]$ dmesg -H
- 使用本地时间戳,而不是默认的UTC时间戳
[linux@bashcommandnotfound.cn ~]$ dmesg -T
- 不打印时间戳,只打印消息内容
[linux@bashcommandnotfound.cn ~]$ dmesg -t
- 从指定的文件中读取消息,而不是环形缓冲区
[linux@bashcommandnotfound.cn ~]$ dmesg -F /var/log/dmesg
- 实时监视环形缓冲区中的消息,按Ctrl+C退出
[linux@bashcommandnotfound.cn ~]$ dmesg -w
- 搜索包含指定关键词的消息,如usb
[linux@bashcommandnotfound.cn ~]$ dmesg | grep usb
Linux dmesg命令的注意事项
- dmesg命令默认需要root权限才能执行,如果你是普通用户,你可以使用sudo命令来提升权限,如
sudo dmesg
。如果你想让普通用户也能执行dmesg命令,你可以修改/proc/sys/kernel/dmesg_restrict
文件的值为0,如echo 0 > /proc/sys/kernel/dmesg_restrict
。 - dmesg命令的输出可能会很长,你可以使用分页工具(如less或more)或管道工具(如grep或awk)来过滤或分析输出,如
dmesg | less
或dmesg | grep eth0
。 - dmesg命令的输出可能会被其他程序或服务覆盖或清除,你可以使用
-f
选项来强制显示所有消息,或者使用-F
选项来从文件中读取消息。一些Linux发行版会将环形缓冲区中的消息保存在/var/log/dmesg
文件中,你可以查看这个文件来获取历史消息。 - 如果你执行dmesg命令时遇到
bash: dmesg: command not found
的错误,说明你的系统中没有安装dmesg命令,你可以使用你的系统的包管理工具来安装它。例如,如果你使用的是基于Debian的Linux发行版,你可以使用以下命令来安装dmesg命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt install util-linux
评论区