我正在修改kvm模塊,並在內核代碼中添加了printk語句。在運行虛擬機之後,printk向我提供了有關guest虛擬機的錯誤地址和其他信息OS。dmesg和/var/log/kern.log之間的區別
我需要從這個信息生成統計信息。當我使用dmesg時,我只能在內核空間看到錯誤地址 ,即它們的地址高於0XC0000000(當VMEXIT發生時需要錯誤地址,主機模式)
當我在kern.log中看到相同的統計信息時,我還從用戶空間(低於0XC0000000)獲取錯誤地址。 因此,在我看來,像dmesg的容量有限,並且給出的信息是來自kern.log的子集。
我的kern.log文件太大,可以從kern.log中刪除舊數據,因爲像grep,join,awk這樣的文本處理命令花費的時間太長,無法在文件上運行。
我的問題是:
dmesg和kern.log有什麼區別?
如何將kern.log文件大小降低爲cron job(刪除過去24小時內添加的所有數據)
有沒有更好的方法從kernel獲取printf kindof功能?