Tutoriel Linux

Dmesg v Linuxu: čte zprávy jádra při selhání disku nebo zařízení

Débutant7 min de lecture

Zmizí USB disk, odpojí se síťová karta, dojde k poruše SSD disku nebo počítač zobrazí chybu hned po spuštění? Před náhodnou změnou konfigurace téměř vždy zkontroluji zprávy jádra.

Pod Linuxem dmesg Umožňuje vám tyto zprávy rychle přečíst. Není to kouzelný nástroj, ale často poskytuje první užitečnou indicii: chybu I/O, resetované USB zařízení, chybějící firmware, problémový ovladač nebo nestabilní síťové připojení.

V této příručce vám ukážu, jak používat dmesg Správně řečeno, zkřížte to s journalctl -kfiltrujte užitečné řádky a vyhněte se falešnému dobrému nápadu změnit systémovou možnost před pochopením zprávy.

Tux kontroluje zprávy linuxového jádra na disku, USB zařízení a serveru.
Příkaz dmesg často poskytuje první vodítko k selhání disku, USB zařízení nebo síťového rozhraní.

Co dmesg skutečně zobrazuje

dmesg zobrazuje vyrovnávací paměť zpráv jádra Linuxu. Jednoduše řečeno, najdete zde nízkoúrovňové události: detekce hardwaru, ovladače, chyby disku, USB, síť, ACPI, firmware, paměť, připojení zařízení atd.

Na moderním počítači jsou některé z těchto zpráv viditelné také v protokolu systemd. Proto doporučuji mít oba příkazy po ruce: dmesg pro rychlé čtení, journalctl -k pro čistší čtení v systémovém protokolu.

dmesg

V některých distribucích může čtení vyžadovat administrátorská oprávnění. Pokud se zobrazí chyba s oprávněními, zkuste to znovu s sudo.

sudo dmesg

Manuálovou stránku dmesg Podrobně popisuje všechny možnosti. Pro běžnou diagnostiku je několik příkazů více než dost.

Přečtěte si poslední řádky, aniž byste se utopili

První věc, kterou je třeba udělat, je nezobrazovat 800 řádků najednou. Pokud problém právě nastal, začněte od konce protokolu jádra.

sudo dmesg -T | tail -n 80

Možnost -T usnadňuje čtení dat. Upozorňujeme, že ačkoli je tento formát vhodný pro rychlé čtení, nenahrazuje důkladnou analýzu novin, pokud porovnáváte velmi specifické události. Proto journalctl zůstává pohodlnější.

Můžete také zobrazit pouze varování a chyby:

sudo dmesg -T --level=err,warn

Pokud příkaz nic nevrátí, nemusí to být nutně špatné znamení. Znamená to jednoduše, že jádro v dané vyrovnávací paměti nezaznamenalo žádné nedávné chyby ani varování.

Filtrování problému s USB, diskem nebo sítí

Skutečnou úsporu času dosáhnete filtrováním. Pokud hledáte důvod, proč se USB disk nepřipojuje, proč pevný disk nefunguje správně nebo proč se síťová karta resetuje, nečtěte všechno. Hledejte slova, která odpovídají hardwaru.

sudo dmesg -T | grep -iE 'usb|sda|sdb|nvme|ata|error|fail|reset'

Pro úplnost, řádky, na které si dát pozor, jsou často docela srozumitelné: Chyba I/O, resetovat, neúspěšný příkaz, blk_update_request, chyba čtení, chyba zápisuPokud se vám tento typ zprávy zobrazuje opakovaně, nezačínejte ji přepisovat. /etc/fstabNejprve zkontrolujte kabel, USB kryt, napájecí zdroj a poté stav disku.

Pro zařízení USB porovnejte příkazy, které již byly uvedeny v příručce na USB porty v Linuxu nebo ten na montáž USB klíče. dmesg říká vám, co jádro pozoruje, ale lsusb, lsblk A findmnt pomáhají pochopit, co je skutečně detekováno a nainstalováno.

lsblk -o NÁZEV,VELIKOST,TYPFS,NÁZOV,UUID,PŘÍPOJOVÉBODY
findmnt
lsusb

V případě problému se sítí hledejte název rozhraní nebo výrazy jako odkaz, přejmenován, firmware, časový limit, dolů, nahoruPokud se téma týká hlavně naslouchání TCP portům, přepněte na ss nebo netstat, protože dmesg nenahrazuje síťový inventář.

Při připojování zařízení postupujte podle pokynů.

Pokud se zařízení občas odpojuje, nejjednodušší způsob je sledovat živé zprávy. Otevřete terminál, spusťte příkaz a poté připojte disk, USB disk nebo síťový adaptér.

sudo dmesg -wH

-w sledovat nové zprávy. -H výstup je čitelnější. Pokud chcete zůstat v logu systemd, použijte:

sudo journalctl -k -f

Manuálovou stránku journalctl To je užitečné, pokud chcete upřesnit vyhledávání podle spuštění, priority nebo jednotky. V případě jednoduchého selhání hardwaru často postačí živé monitorování, které zjistí, zda jádro detekuje větev a následně chybu.

Křížový odkaz s journalctl pro poslední spuštění

dmesg Je to rychlé, ale nekončím tím, pokud problém postihuje server nebo se po restartu objeví znovu. Log systemd umožňuje znovu načíst zprávy jádra z aktuálního spuštění s vlastními filtry.

sudo journalctl -k -b --no-pager
sudo journalctl -k -b -p varování..alert --no-pager

První příkaz zobrazuje zprávy jádra z aktuálního bootovacího procesu. Druhý uchovává pouze varování, chyby a upozornění. To je užitečné po restartu, kdy se připojení nezdařilo, kdy síťové rozhraní není správně připojeno nebo když ovladač hlásí problém při bootování.

Pokud jste právě upravili /etc/fstabNerestartujte jen proto, abyste se podívali. Nejprve otestujte sestavu a zkontrolujte, zda nedošlo k chybám. Průvodce na fstab v Linuxu Tento bod je třeba podrobně vysvětlit, protože špatná linka může zablokovat spuštění rychleji, než si dokážete představit.

sudo mount -a
findmnt
sudo journalctl -k -b -p varování..alert --no-pager

Rozpoznání, kdy zpráva indikuje skutečný hardwarový problém

Izolovaná linka dovnitř dmesg To ne vždy stačí k vyvození závěru. Zařízení USB se může jednou resetovat, aniž by to bylo vážné. Chyba, která se opakuje při každé kopii, disk, který se střídavě odpojuje a znovu připojuje, nebo opakované chyby I/O by však měly být brány vážně.

V tomto případě provedu tři kontroly, než se dotknu konfigurace:

  • vyměňte kabel, USB port nebo napájecí zdroj, pokud je zařízení externí;
  • ověřte, zda je disk správně identifikován lsblk A blkid ;
  • Zkontrolujte stav SMART, pokud se jedná o disk nebo SSD.
lsblk -o NÁZEV,VELIKOST,MODEL,SÉRIOVÉ ČÍSLO,TYPFS,PŘIPOJOVACÍBODY
sudo blkid
sudo smartctl -a /dev/sdX

Nahradit /dev/sdX správným diskem. Nekopírujte tento příkaz naslepo na počítač s více disky. Pokud si nejste jisti, zastavte se u lsblk a než budete pokračovat, určete model, velikost a montážní bod.

Před opravou si poznamenejte přesnou chybu.

Nejlepší využití dmesgCílem není najít kouzelné řešení. Jde o to zachytit konkrétní chybu, než se podniknou kroky. Zkopírujte několik řádků kolem zprávy, poznamenejte si čas, příslušné zařízení a akci, která problém spouští.

sudo dmesg -T | tail -n 120 > core-diagnostic.txt
sudo journalctl -k -b -p warning..alert --no-pager >> core-diagnostic.txt

Teprve poté se můžete rozhodnout: který kabel vyměnit, který disk zálohovat, který ovladač zkontrolovat, které pravidlo fstab opravit, který firmware nainstalovat nebo kterou službu monitorovat. Tento krok se zdá být základní, ale zabraňuje mnoha absurdním diagnózám, zejména u občasných závad.

Pokud spravujete vzdálený počítač, buďte ještě opatrnější. Chyba disku nebo sítě zjištěná v jádře může nakonec váš přístup znemožnit. Udržujte relaci otevřenou, pokud možno poskytněte přístup ke konzoli a nerestartujte počítač, dokud nepochopíte, co se vám jádro snaží sdělit.