開機時,kernel 被載入記憶體,接著 module/driver 開始驅動硬體,過程中會輸出大量的訊息 (message);開機完成後,kernel 偶爾也會產生一些有助於診斷問題 (diagnostic) 的 message,例如 I/O 發生問題、USB 裝置熱插拔時。
這些 message 都會被寫入 kernel 內部的 ring buffer (由於 buffer 的大小固定,所以舊的 message 就會被新的 message 推擠掉),dmesg
則可以用來查看目前 kernel ring buffer 的內容:
dmesg [-H]
其中 -H
(--human
) 會以比較容易閱讀 (human-readable) 的方式顯示,最主要是用 local time 顯示時間。例如:
|
|
通常會搭配 grep
過濾特定的 kernel message,例如要找 USB 相關的問題,可以用:
dmesg [-H] | grep -i usb
由於 ring buffer 本身不是個 log file,無法用 tail
持續觀察它的變化,不過 dmesg
自己提供了 -w
(--follow
) 可以達到相同的效果:(Kernel 3.5.0 之後才有的功能)
dmesg [-H] -w
更多關於 Linux 的學習心得,請參考 Linux 學習筆記。