我正在修改 kvm 模块,并在内核代码中添加了 printk 语句。运行虚拟机后,printk 为我提供了错误地址和有关来宾操作系统的其他信息。
我需要从这个信息中生成统计信息。当我使用 dmesg 时,我只能看到内核空间中的错误地址,即它们的地址高于 0XC0000000。(发生 VMEXIT 时需要错误地址,即我们从访客模式切换到主机模式)
当我在 kern.log 中看到相同的统计信息时,我也会从用户空间(低于 0XC0000000)获得错误地址。所以在我看来,dmesg 的容量有限,并且给出的信息是 kern.log 的一个子集。
我的 kern.log 文件太大,是否可以从 kern.log 中删除旧数据,因为 grep、join、awk 等文本处理命令在文件上运行的时间太长。
我的问题是:
dmesg 和 kern.log 有什么区别?
如何在 cron 作业中减小 kern.log 文件的大小?(擦除过去 24 小时内添加的所有数据)
有没有更好的方法从内核获取 printf kindof 功能?