如何查看 dmesg 输出的变化?

如何查看 dmesg 输出的变化?

我正在编写一个设备驱动程序,将错误消息打印到环形缓冲区dmesg 输出。我想看到dmesg它变化时的输出。

我怎样才能做到这一点?

答案1

相对较新的dmesg版本提供跟随选项( -w, --follow) 的作用类似于tail -f.

因此,只需使用以下命令:

$ dmesg -wH

-H--human启用用户友好的功能,例如颜色、相对时间)

这些选项在 Fedora 19 中可用。

答案2

您可以使用watch专门用于此类操作的命令

watch -n 0.1 "dmesg | tail -n $((LINES-6))"

$((LINES-6))部件应该能够很好地适合您的终端。

答案3

您无法真正直接监视输出dmesg

但是,您的模块很可能不会直接打印到 dmesg 的环形缓冲区中,而是使用内核日志记录工具(然后将通过 来显示dmesg)。如果您syslog有一些合理的(例如默认)设置,这些消息很可能也会显示在kern.log日志文件中。

所以你可以这样做:

 tail -f /var/log/kern.log

答案4

如果您使用的是嵌入式系统,例如忙碌盒这在像这样的系统上很常见开放Wrt,它的功能非常有限,仅支持 2-3 个标志。

如果您想要一种快速而肮脏的方式,随着事件的变化不断在屏幕上打印 dmesg 输出,一个简单的 Bash 循环就可以了。这并不理想,但正如我提到的,BusyBox dmesg 缺少很多功能。我发现在命令行中输入以下内容具有相同的效果:

$ while true; do dmesg -c ; sleep 1 ; done

Ctrl您可以使用+退出循环C。 sleep 1 是为了阻止它不必要地消耗 CPU,并且 -c 标志会在每次调用时清除缓冲区,这样您就不会看到每秒重复的输出。

相关内容