如何过滤 dmesg 日志以仅查看错误

如何过滤 dmesg 日志以仅查看错误

我在 ubuntu 中,当我编写 dmesg 时,错误消息显示为红色,我怎样才能在控制台中仅打印这些消息?

答案1

使用--level中描述的选项man dmesg

  -l, --level list
         Restrict output to the given (comma-separated) list of levels.
         For example:

                dmesg --level=err,warn

         will print error and warning messages only.  For all supported
         levels see the --help output.

答案2

直接回答

dmesg --level=emerg,alert,crit,err

这是大多数人都会寻找的。从以下八个列表中添加或删除任何一个,按严重性排序。

   emerg - system is unusable    
   alert - action must be taken immediately
    crit - critical conditions
     err - error conditions
    warn - warning conditions   
  notice - normal but significant condition
    info - informational    
   debug - debug-level messages

替代答案
我喜欢使用 grep 快速过滤 dmesg 输出结果,而且,您可以在许多 show 命令的末尾使用它。这-i不区分大小写。参考:https://www.howtogeek.com/449335/how-to-use-the-dmesg-command-on-linux/

dmesg | grep -i "error"

另外一个选择

journalctl -p 0..3

这会以不同的方式看待类似的信息。修改严重性过滤(0through 3),但只需使用数字 0 到 7 即可实现与 dmesg 相同的概念,而无需记住这些关键字。
信用:https://askubuntu.com/a/1245985/192800

兔子洞
另一种思考方法是使用您选择的任何方法查看实际的日志文件,而不是解决 dmesg 的限制。这可以广泛地应用于任何文件,并且使用正则表达式之类的东西具有无限的潜力。以下是显示最后条目数的两种方法的演示-n

tail -n 20 /var/log/dmesg
dmesg | tail -n 20

答案3

dmesg --level=warn+

它将输出所有警告和所有更高级别的日志。

还,

dmesg --level=+warn

它将输出所有级别低于 warn 的日志。

相关内容