在Debian系統中,非root用戶可能因kernel.dmesg_restrict參數限制無法查看dmesg日志。若遇到“Operation not permitted”錯誤,需臨時允許普通用戶訪問:
sudo sysctl -w kernel.dmesg_restrict=0  # 臨時關閉限制(重啟后失效)
如需永久生效,可將上述命令添加到/etc/sysctl.conf文件中。
直接運行dmesg命令,顯示內核環緩沖區中的所有消息(包括啟動信息、硬件檢測、驅動加載等)。由于輸出內容較多,建議通過管道傳遞給分頁工具(如less)瀏覽:
dmesg | less  # 分頁查看,按“q”退出
或使用-H選項以更易讀的格式顯示(包含顏色、時間戳等):
dmesg -H  # 人類可讀格式
通過grep命令篩選特定關鍵字(如“error”“fail”“warning”),縮小排查范圍:
dmesg | grep -i error  # 不區分大小寫查找錯誤信息
dmesg | grep -i fail   # 查找失敗信息
dmesg -l err,warn      # 僅顯示錯誤(err)和警告(warn)級別的日志(需支持-l選項)
若需動態查看系統運行中的內核事件(如硬件插入、驅動加載),可使用-w(或--follow)選項:
dmesg -w  # 實時刷新,按“Ctrl+C”停止
該命令會持續輸出新增的內核消息,便于及時發現突發問題。
dmesg日志的每條消息通常包含以下核心要素,需重點關注:
-T選項顯示人類可讀的時間(如[Mon Oct 14 14:38:04 2019]),幫助定位問題發生的時間點;典型表現:日志中出現“error”“fail”等關鍵字,伴隨設備名稱(如硬盤、內存、USB)。
排查步驟:
smartctl工具檢查硬盤健康狀況:sudo apt install smartmontools  # 安裝smartmontools
sudo smartctl -a /dev/sda       # 檢查硬盤健康狀態(替換為實際設備名)
memtest86+工具進行內存測試(需從Debian安裝介質的“測試”選項啟動)。典型表現:日志中出現“failed to load module”“module version mismatch”(模塊版本不匹配)、“device not found”,伴隨驅動名稱(如“e1000e”“nvidia”)。
排查步驟:
apt更新系統及驅動(如sudo apt update && sudo apt upgrade);lsmod查看加載的模塊,用rmmod卸載沖突模塊(需謹慎操作)。典型表現:日志中出現“filesystem error”“mount failed”“superblock corrupt”,伴隨文件系統名稱(如“ext4”“btrfs”)。
排查步驟:
sudo umount /dev/sdXY,替換為實際設備名);fsck工具修復文件系統(需從Live CD/USB啟動,避免掛載目標分區):sudo fsck -y /dev/sdXY  # 自動修復錯誤(替換為實際設備名)
典型表現:系統無法正常啟動,日志中出現“kernel panic”“bootloader error”“failed to mount root filesystem”。
排查步驟:
grub-install重新安裝引導加載程序(需從Live CD/USB啟動)。若需將dmesg日志分享給他人協助排查,可將輸出保存到文件:
dmesg > dmesg.log  # 保存到當前目錄
或包含時間戳(便于分析):
dmesg -T > dmesg_with_timestamp.log  # 人類可讀時間戳
通過scp或rsync將日志文件傳輸至其他設備:
scp dmesg.log user@remote_host:/path/to/destination  # 傳輸到遠程主機