首頁 > 套件與系統管理 > dmesg

dmesg: 檢查核心環狀緩衝區訊息

此命令用於檢查系統啟動時核心輸出的訊息(核心環狀緩衝區)。它是診斷硬體偵測、驅動程式載入和系統錯誤的必備工具。

dmesg 是什麼?

dmesg 是 'display message' 或 'driver message' 的縮寫,用於輸出儲存在 Linux 核心環狀緩衝區 (Ring Buffer) 中的訊息。它以時間順序顯示系統從啟動到目前為止,硬體如何被識別、驅動程式如何載入,以及發生了哪些錯誤。

核心功能與用途

dmesg 用於診斷系統最低層級(核心)發生的事件。

  • 檢查啟動訊息: 查看系統啟動時輸出的所有核心訊息。
  • 硬體診斷: 檢查新硬體(如 USB、磁碟)連接或移除時的日誌。
  • 驅動程式錯誤: 追蹤驅動程式載入失敗或核心級別錯誤 (Kernel Panic) 的原因。
  • 環狀緩衝區: 緩衝區大小固定,舊日誌會被新日誌覆蓋。

主要選項 (Shell)

dmesg 通常與其他命令(如 grep, less)透過管道 (|) 結合使用,但它本身也具有許多實用的選項。

1. 輸出格式與時間

2. 過濾與即時監控

3. 緩衝區/控制台控制 (需注意)

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`dmesg` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用情境範例 (Shell)

dmesg 經常與 grep 結合使用,以過濾出所需的資訊。

查看所有訊息 (分頁)

dmesg | less

最基本的使用方法。使用 less 方便捲動。

即時查看新訊息 (易讀模式)

dmesg -wH

結合 -w (即時) 和 -H (人類易讀時間) 選項。

僅過濾 USB 相關訊息

dmesg | grep -i usb

grep 的 -i 選項會忽略大小寫。

過濾磁碟 (SATA/NVMe) 相關訊息

dmesg | grep -iE 'sd[a-z]|nvme'

使用 grep -E (擴展正則表達式) 查找包含 'sd[a-z]' 或 'nvme' 的日誌。

僅過濾錯誤 (Error) 或警告 (Warn)

dmesg -H -l err,warn

使用 -l 選項指定日誌級別。

僅查看最近 10 行訊息

dmesg | tail -n 10

結合 tail 快速查看最近的訊息。

包含 facility/level 標籤查看

dmesg -xT | less

使用 -x 選項解碼 facility/level 以幫助理解。

將日誌儲存到檔案

dmesg -T > ~/dmesg-$(date +%F-%H%M).log

在啟動後立即保存完整的 dmesg 輸出。

安裝

dmesg 包含在 util-linux 套件中,並且在大多數 Linux 發行版中預設提供。

預設已安裝

無需額外安裝。如果沒有,請安裝發行版的 'util-linux' 套件。

提示與注意事項

dmesg 與 journalctl 的比較

  • systemd 環境: 在最新的 systemd 系統中,可以使用 'journalctl -k' (核心日誌) 或 'journalctl -b' (本次啟動日誌) 來整合查看超越 dmesg 級別的系統日誌。
  • 時間格式: dmesg 預設輸出的時間是 [系統啟動後的經過秒數]。若要查看實際時間,請使用 '-H' 或 '-T' 選項。
  • 緩衝區覆蓋: 由於環狀緩衝區的特性,舊訊息可能會被覆蓋。如果需要保留啟動初期的日誌,請使用 'journalctl -b 0' 檢查或將 dmesg 輸出儲存到檔案中。
  • 權限/安全性: 某些發行版會透過 '/proc/sys/kernel/dmesg_restrict=1' 限制普通使用者對 dmesg 的存取。在這種情況下,請使用 'sudo dmesg' 或 'sudo journalctl -k'。
  • 清除日誌 (-c, -C): 'dmesg -c' 和 '-C' 對於調試很有用,但一旦清除就無法恢復。在生產環境中請謹慎使用。

相關命令

功能上相似或經常一起使用的命令。



相同類別命令