Logs

如何過濾 dmesg 日誌以僅查看錯誤

  • August 10, 2021

我在 ubuntu 中,當我寫 dmesg 時,錯誤消息顯示為紅色,我怎麼能在控制台中只列印那些?

使用--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.

直接回答

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

這以不同的方式看待相似的資訊。修改嚴重性過濾(0通過3),但只需使用數字 0 到 7 來表示與 dmesg 相同的概念,而不必記住這些關鍵字。

信用:https ://askubuntu.com/a/1245985/192800

兔子洞

另一種思考方式是使用您選擇的任何方法查看實際日誌文件,而不是繞過 dmesg 的限制。這可以廣泛應用於任何文件,並且使用正則表達式等具有無限潛力。這是顯示最後-n條目數的兩種方法的展示。

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

引用自:https://unix.stackexchange.com/questions/390141