Jak používat příkaz dmesg na Linuxu

Příkaz dmesg vám umožní nahlédnout do skrytého světa spouštěcích procesů Linuxu. Prohlížejte a monitorujte zprávy o hardwarových zařízeních a ovladačích z vlastní kruhové vyrovnávací paměti jádra s „přítelem vyhledávače chyb“.

Jak funguje vyzváněcí vyrovnávací paměť Linuxu

V Linuxu a počítačích podobných Unixu jsou bootování a spouštění dvě odlišné fáze sledu událostí, které se odehrávají, když je počítač zapnutý.

Zaváděcí procesy (BIOS nebo UEFI, MBR, a GRUB) vezměte inicializaci systému do bodu, kdy je jádro nahráno do paměti a připojeno k počátečnímu ramdisku (initrd nebo initramfs), a systemd je spuštěno.

Startovací procesy pak zvednou štafetu a dokončí inicializaci operačního systému. Ve velmi raných fázích inicializace jsou logovací démoni jako např syslogd nebo rsyslogd ještě nejsou v provozu. Aby nedošlo ke ztrátě významných chybových zpráv a varování z této fáze inicializace, jádro obsahuje a prstencový buffer které používá jako úložiště zpráv.

Vyrovnávací paměť je paměťový prostor vyhrazený pro zprávy. Má jednoduchý design a pevnou velikost. Když je plná, novější zprávy přepíší nejstarší zprávy. Koncepčně to lze považovat za „kruhový buffer.“

Kruhová vyrovnávací paměť jádra uchovává informace, jako jsou inicializační zprávy ovladačů zařízení, zprávy z hardwaru a zprávy z modulů jádra. Protože obsahuje tyto nízkoúrovňové spouštěcí zprávy, je kruhová vyrovnávací paměť dobrým místem pro zahájení vyšetřování hardwarových chyb nebo jiných problémů se spouštěním.

Ale neodcházejte s prázdnou. Vezměte s sebou dmesg.

Příkaz dmesg

Příkaz dmesg vám to umožňuje pro kontrolu zpráv, které jsou uloženy v kruhové vyrovnávací paměti. Ve výchozím nastavení musíte k použití dmesg použít sudo.

sudo dmesg

Všechny zprávy v ring bufferu jsou zobrazeny v okně terminálu.

To byla záplava. Je zřejmé, že musíme udělat méně potrubí:

sudo dmesg | less

Nyní můžeme procházet zprávy a hledat položky, které nás zajímají.

Funkci vyhledávání můžete použít k vyhledání a zvýraznění položek a výrazů, které vás zajímají. Spusťte funkci vyhledávání stisknutím tlačítka lomítka „/“ v menším rozsahu.

  Jak povolit Gmail offline režim [Chrome]

Odstranění Need for sudo

Pokud se chcete vyhnout nutnosti používat sudo pokaždé, když používáte dmesg, můžete použít tento příkaz. Ale pozor: umožňuje komukoli s uživatelským účtem na vašem počítači používat dmesg, aniž by musel používat sudo.

sudo sysctl -w kernel.dmesg_restrict=0

Vynucení barevného výstupu

Ve výchozím nastavení bude dmesg pravděpodobně nakonfigurován tak, aby produkoval barevný výstup. Pokud tomu tak není, můžete říci dmesg, aby obarvil svůj výstup pomocí volby -L (barva).

sudo dmesg -L

Chcete-li přinutit dmesg, aby vždy jako výchozí použil barevný displej, použijte tento příkaz:

sudo dmesg --color=always

Lidská časová razítka

Ve výchozím nastavení používá dmesg zápis časového razítka v sekundách a nanosekundy od spuštění jádra. Chcete-li to vykreslit ve formátu přívětivějším pro člověka, použijte volbu -H (human).

sudo dmesg -H

To způsobí, že se stanou dvě věci.

Výstup se automaticky zobrazí za méně.
Časová razítka zobrazují časové razítko s datem a časem v minutovém rozlišení. Zprávy, které se vyskytly v každé minutě, jsou označeny sekundami a nanosekundami od začátku dané minuty.

Časová razítka čitelná člověkem

Pokud nepožadujete přesnost v nanosekundách, ale chcete časová razítka, která jsou snáze čitelná než výchozí hodnoty, použijte volbu -T (čitelná pro člověka). (Je to trochu matoucí. -H je možnost „člověka“, -T je možnost „čitelná pro člověka“.)

sudo dmesg -T

Časová razítka jsou vykreslena jako standardní data a časy, ale rozlišení je sníženo na minutu.

Všechno, co se stalo během jediné minuty, má stejné časové razítko. Pokud vás trápí pouze sled událostí, je to dost dobré. Všimněte si také, že budete vráceni zpět na příkazovém řádku. Tato možnost automaticky nevyvolá méně.

Sledování přímých přenosů

Chcete-li vidět zprávy, jak přicházejí do kruhové vyrovnávací paměti jádra, použijte volbu –follow (čekat na zprávy). Ta věta se může zdát trochu zvláštní. Pokud se kruhová vyrovnávací paměť používá k ukládání zpráv z událostí, které probíhají během spouštěcí sekvence, jak mohou živé zprávy docházet do kruhové vyrovnávací paměti, jakmile je počítač v provozu?

  Jak bezpečně torrentovat a chránit svou identitu (recenze 2020)

Cokoli, co způsobí změnu hardwaru připojeného k vašemu počítači, způsobí odeslání zpráv do kruhové vyrovnávací paměti jádra. Aktualizujte nebo přidejte modul jádra a uvidíte zprávy o těchto změnách ve vyrovnávací paměti. Pokud připojíte USB disk nebo připojíte či odpojíte zařízení Bluetooth, uvidíte zprávy ve výstupu dmesg. I virtuální hardware způsobí, že se v ring bufferu objeví nové zprávy. Spusťte virtuální počítač a do vyrovnávací paměti kruhu uvidíte přicházet nové informace.

sudo dmesg --follow

Všimněte si, že nejste vráceni do příkazového řádku. Když se objeví nové zprávy, zobrazí je dmesg ve spodní části okna terminálu.

Dokonce i připojení disku CD-ROM je považováno za změnu, protože jste obsah disku CD-ROM naroubovali do stromu adresářů.

Chcete-li ukončit zdroj v reálném čase, stiskněte Ctrl+C.

Získejte posledních deset zpráv

Použijte příkaz ocas získat posledních deset zprávy kruhové vyrovnávací paměti jádra. Samozřejmě můžete načíst libovolný počet zpráv. Desatero je jen náš příklad.

sudo dmesg | last -10

Načte se posledních deset zpráv a zobrazí se v okně terminálu.

Hledání konkrétních výrazů

Propojte výstup z dmesg přes grep vyhledávat konkrétní řetězce nebo vzory. Zde používáme volbu -i (ignorovat malá a velká písmena), aby se malá a velká písmena shodných řetězců nebrala v úvahu. naše výsledky budou zahrnovat „usb“ a „USB“ a jakoukoli jinou kombinaci malých a velkých písmen.

sudo dmesg | grep -i usb

Zvýrazněné výsledky vyhledávání jsou velká a malá písmena.

Můžeme izolovat zprávy, které obsahují odkazy na první SCSI pevný disk na systémovém sda. (Ve skutečnosti se sda ​​dnes používá také pro první pevný disk SATAa pro USB disky.)

sudo dmesg | grep -i sda

Všechny zprávy, které zmiňují sda, jsou načteny a uvedeny v okně terminálu.

Chcete-li, aby grep vyhledával více výrazů najednou, použijte volbu -E (rozšířit regulární výraz). Hledané výrazy musíte zadat uvnitř řetězce v uvozovkách se svislou čarou „|“ oddělovače mezi hledanými výrazy:

sudo dmesg | grep -E "memory|tty|dma"

sudo dmesg |  grep -E

Každá zpráva, která zmiňuje některý z hledaných výrazů, je uvedena v okně terminálu.

výstup ze sudo dmesg |  grep -E

Použití úrovní protokolu

Každá zpráva přihlášená do kruhové vyrovnávací paměti jádra má přiřazenou úroveň. Úroveň představuje důležitost informace ve zprávě. Úrovně jsou:

emerg: Systém je nepoužitelný.
upozornění: Musí být okamžitě přijata opatření.
crit: Kritické podmínky.
err: Chybové stavy.
varovat: Varovné podmínky.
upozornění: Normální, ale významný stav.
info: Informační.
debug: Zprávy na úrovni ladění.

  Jak hrát Battlefield V na Linuxu

Můžeme vytvořit dmesg extrahovat zprávy, které odpovídají konkrétní úrovni, použitím volby -l (úroveň) a předáním názvu úrovně jako parametru příkazového řádku. Chcete-li zobrazit pouze zprávy „informační“ úrovně, použijte tento příkaz:

sudo dmesg -l info

Všechny uvedené zprávy jsou informativní. Neobsahují chyby ani varování, pouze užitečná upozornění.

Zkombinujte dvě nebo více úrovní protokolu v jednom příkazu a načtěte zprávy několika úrovní protokolu:

sudo dmesg -l debug,notice

Výstup z dmesg je směs zpráv každé úrovně protokolu:

Kategorie zařízení

Zprávy dmesg jsou seskupeny do kategorií nazývaných „zařízení“. Seznam zařízení je:

kern: Zprávy jádra.
uživatel: Zprávy na uživatelské úrovni.
mail: Poštovní systém.
démon: Systémoví démoni.
auth: Bezpečnostní/autorizační zprávy.
syslog: Interní zprávy syslogd.
lpr: Subsystém řádkové tiskárny.
novinky: Subsystém síťové novinky.

Můžeme požádat dmesg, aby filtroval svůj výstup tak, aby zobrazoval pouze zprávy v konkrétním zařízení. K tomu musíme použít volbu -f (zařízení):

sudo dmesg -f daemon

dmesg uvádí všechny zprávy týkající se démonů v okně terminálu.

Stejně jako u úrovní můžeme požádat dmesg o výpis zpráv z více než jednoho zařízení najednou:

sudo dmesg -f syslog, daemon

Výstupem je mix zpráv syslog a daemon log.

Kombinace zařízení a úrovně

Volba -x (decode) způsobí, že dmesg zobrazí zařízení a úroveň jako lidsky čitelné předpony pro každý řádek.

sudo dmesg -x

Zařízení a úroveň lze vidět na začátku každého řádku:

První zvýrazněná část je zpráva ze zařízení „kernel“ s úrovní „upozornění“. Druhá zvýrazněná část je zpráva ze zařízení „kernel“ s úrovní „info“.

To je skvělé, ale proč?

Zkrátka hledání závad.

Pokud máte problémy s tím, že některý hardware není rozpoznán nebo se nechová správně, může dmesg vnést trochu světla do problému.

Použijte dmesg k procházení zpráv od nejvyšší úrovně až po každou nižší úroveň a hledejte chyby nebo varování, která zmiňují položku hardwaru nebo mohou mít na problém vliv.
Použijte dmesg k vyhledání jakékoli zmínky o příslušném zařízení, abyste zjistili, zda obsahují nějaké užitečné informace.
Propojte dmesg přes grep a vyhledejte související řetězce nebo identifikátory, jako je výrobce produktu nebo čísla modelu.
Propojte dmesg přes grep a vyhledejte obecné výrazy jako „gpu“ nebo „úložiště“ nebo výrazy jako „selhání“, „selhání“ nebo „není možné“.
Použijte volbu –follow a sledujte zprávy dmesg v reálném čase.

Šťastný lov.