如何查看 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 標誌會在每次調用時清除緩衝區,這樣您就不會看到每秒重複的輸出。

相關內容