侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux dmesg命令详解:如何显示和控制内核环形缓冲区(附实例教程和注意事项)

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 | lessdmesg | 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
0

评论区