我正在编写一个设备驱动程序,将错误信息打印到ring buffer dmesg输出中。
我想看到dmesg
的输出,因为它的变化。
我怎样才能做到这一点?
你使用dmesg
来获取内核的日志信息。
内核本身记录到一个环形缓冲区,也就是说,只是在内存中。
现在dmesg
所做的就是输出这个环形缓冲区的内容。
如果你做dmesg -c
,它也会在事后删除环形缓冲区。
因此你可以做一些类似于while true; do dmesg -c; sleep 1; done
的事情来获得相当于一个不工作的dmesg|tail
。但这将删除环形缓冲区,因此需要root权限。
另一个方法是/proc/kmsg
文件,它允许查看环形缓冲区。你可以使用tail -f /proc/kmsg
,但这只允许一个进程使用,而这通常是你的日志守护进程。- 它的工作是读取信息并将其写入真正的文件(通常在/var/log中),在那里它们可以被读取。它可以被配置为将所有信息输出到一个文件或将不同部分输出到不同的文件。(但配置取决于你系统的日志守护程序)。
因此,看看/var/log
是否有适合你需要的文件,否则就配置你的日志守护程序。