dmesg命令允許您窺視Linux啟動程序的隱藏世界。與“故障查詢者的朋友”一起檢視和監視來自核心自己的環形緩衝區的硬體裝置和驅動程式訊息
在Linux和Unix類計算機中,啟動和啟動是計算機通電時發生的事件序列的兩個不同階段。
引導程序(BIOS或UEFI、MBR和GRUB)將系統初始化到核心載入到記憶體並連線到初始ramdisk(initrd或initramfs)的點,然後啟動systemd。
然後啟動程序拿起指揮棒,完成作業系統的初始化。在初始化的早期階段,諸如syslogd或rsyslogd之類的日誌守護程式還沒有啟動和執行。為了避免在這個初始化階段丟失明顯的錯誤訊息和警告,核心包含一個環形緩衝區,它將其用作訊息儲存。
環形緩衝區是為訊息保留的記憶體空間。它設計簡單,尺寸固定。當郵件已滿時,較新的郵件將覆蓋最舊的郵件。從概念上講,它可以被認為是一個“迴圈緩衝區”
核心環形緩衝區儲存諸如裝置驅動程式的初始化訊息、來自硬體的訊息和來自核心模組的訊息等資訊。因為它包含這些低階啟動訊息,所以環形緩衝區是開始調查硬體錯誤或其他啟動問題的好地方。
但不要空手而歸。帶上dmesg。
dmesg命令允許您檢視儲存在環形緩衝區中的訊息。預設情況下,您需要使用sudo來使用dmesg。
sudo dmesg環形緩衝區中的所有訊息都顯示在終端視窗中。
那是一場洪水。顯然,我們需要做的是少用管道輸送:
sudo dmesg | less現在我們可以在訊息中滾動查詢感興趣的專案。
您可以使用less中的搜尋功能來定位和突出顯示您感興趣的專案和術語。按less中的正斜槓“/”鍵啟動搜尋功能。
相關:如何在Linux上使用less命令
如果希望避免每次使用dmesg時都必須使用sudo,可以使用以下命令。但是,請注意:它允許任何擁有您的計算機使用者帳戶的人使用dmesg,而不必使用sudo。
sudo sysctl -w kernel.dmesg_restrict=0預設情況下,dmesg可能被配置為生成彩色輸出。如果不是,您可以告訴dmesg使用-L(color)選項對其輸出著色。
sudo dmesg -L要強制dmesg始終預設為彩色顯示,請使用以下命令:
sudo dmesg --color=always預設情況下,dmesg使用自核心啟動以來秒和納秒的時間戳表示法。要以更人性化的格式呈現,請使用-H(human)選項。
sudo dmesg -H這導致兩件事發生。
如果您不需要納秒精度,但確實希望時間戳比預設值更易於讀取,請使用-t(人類可讀)選項。)有點困惑。-H是“人類”選項,-T是“人類可讀”選項。)
sudo dmesg -T時間戳呈現為標準日期和時間,但解析度降低到一分鐘。
一分鐘內發生的一切都有相同的時間戳。如果你只關心事件的順序,這就足夠了。另外,請注意,您在命令提示符下返回。此選項不會自動呼叫less。
要在訊息到達核心環形緩衝區時檢視訊息,請使用--follow(等待訊息)選項。那句話可能有點奇怪。如果環形緩衝區用於儲存啟動序列中發生的事件的訊息,那麼一旦計算機啟動並執行,實時訊息如何到達環形緩衝區?
任何導致連線到計算機的硬體發生更改的操作都會導致訊息被髮送到核心環形緩衝區。更新或新增核心模組,您將看到關於這些更改的環形緩衝區訊息。如果**USB驅動器或連線或斷開藍芽裝置,您將在dmesg輸出中看到訊息。即使是虛擬硬體也會導致新訊息出現在環形緩衝區中。啟動一個虛擬機器,您將看到新資訊到達環形緩衝區。
sudo dmesg --follow請注意,不會返回到命令提示符。當出現新訊息時,dmesg將在終端視窗的底部顯示這些訊息。
即使裝載CD-ROM磁碟也被視為一種變化,因為您已經將CD-ROM磁碟的內容嫁接到目錄樹上。
要退出實時提要,請按Ctrl+C。
使用tail命令檢索最後十條核心環緩衝區訊息。當然,您可以檢索任意數量的訊息。十隻是我們的例子。
sudo dmesg | last -10最後十條訊息將被檢索並在終端視窗中列出。
透過grep將dmesg的輸出管道化,以搜尋特定的字串或模式。在這裡,我們使用-i(忽略大小寫)選項,以便忽略匹配字串的大小寫。我們的結果將包括“u**”和“u**”以及任何其他小寫和大寫的組合。
sudo dmesg | grep -i u**突出顯示的搜尋結果是大寫和小寫的。
我們可以隔離包含對系統sda上第一個SCSI硬碟的引用的訊息。(實際上,sda現在也用於第一個SATA硬碟驅動器和USB驅動器。)
sudo dmesg | grep -i sda所有提到sda的訊息都會被檢索並在終端視窗中列出。
要使grep一次搜尋多個術語,請使用-E(擴充套件正則表示式)選項。必須在帶引號的字串中提供搜尋項,在搜尋項之間使用管道“|”分隔符:
sudo dmesg | grep -E "memory|tty|dma"任何提到任何搜尋詞的訊息都會列在終端視窗中。
記錄到核心環形緩衝區的每條訊息都有一個附加級別。級別表示訊息中資訊的重要性。級別為:
透過使用-l(level)選項並將級別的名稱作為命令列引數傳遞,我們可以讓dmesg提取與特定級別匹配的訊息。要僅檢視“資訊”級訊息,請使用以下命令:
sudo dmesg -l info列出的所有訊息都是資訊性訊息。它們不包含錯誤或警告,只是有用的通知。
在一個命令中組合兩個或多個日誌級別以檢索多個日誌級別的訊息:
sudo dmesg -l debug,noticedmesg的輸出是每個日誌級別的訊息的混合:
dmesg訊息分為稱為“設施”的類別。設施列表為:
我們可以要求dmesg過濾其輸出,以便只顯示特定設施中的訊息。為此,我們必須使用-f(facility)選項:
sudo dmesg -f daemondmesg列出終端視窗中與守護程序相關的所有訊息。
正如我們對級別所做的那樣,我們可以要求dmesg一次列出來自多個設施的訊息:
sudo dmesg -f syslog, daemon輸出是syslog和daemon日誌訊息的混合。
x(decode)選項使dmesg將設施和級別顯示為每行的可讀字首。
sudo dmesg -x在每條線的起點可以看到設施和水平:
第一個突出顯示的部分是來自“kernel”工具的訊息,級別為“notice”。第二個突出顯示的部分是來自“kernel”工具的訊息,級別為“info”
簡言之,故障查詢。
如果您遇到硬體無法識別或無**常工作的問題,dmesg可能會對該問題有所幫助。
狩獵愉快。
... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...
...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...
... 如何在windows10上安裝linux bash shell ...
... 本指南將重點介紹如何將Tvheadend與DVB-T/T2調諧器一起用於無線地面電視,但如果您更喜歡使用Tvheadend從其他輸入源錄製電視,則設定Tvheadend的許多說明將保持不變。 ...
要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...
想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...
...版本可以讓您對安全更新做出重要決定。我們將向您展示如何找到這些,無論您使用哪個發行版。 滾動和點釋放 你知道你在執行哪個版本的Linux嗎?你能找到核心版本嗎?Linux的滾動發行版,如Arch、Manjaro和openSUSE,經常使用自...