Tutoriel Linux

Dmesg in Linux: legge i messaggi del kernel quando un disco o un dispositivo si guasta.

Débutant6 min de lecture

Una chiavetta USB scompare, una scheda di rete si disconnette, un SSD non funziona correttamente o un computer visualizza un errore subito dopo l’avvio? Prima di modificare la configurazione a caso, controllo quasi sempre i messaggi del kernel.

Sotto Linux, dmesg Consente di leggere rapidamente questi messaggi. Non è uno strumento magico, ma spesso fornisce il primo indizio utile: un errore di I/O, un dispositivo USB ripristinato, firmware mancante, un driver che segnala un problema o una connessione di rete instabile.

In questa guida ti mostrerò come usare dmesg A dirla propriamente, incrocialo con journalctl -kFiltra le righe utili ed evita la falsa buona idea di modificare un’opzione di sistema prima di aver compreso il messaggio.

Tux analizza i messaggi del kernel Linux relativi a un disco, un dispositivo USB e un server.
Il comando dmesg spesso fornisce il primo indizio in caso di guasto di un disco, di un dispositivo USB o di un’interfaccia di rete.

Cosa visualizza effettivamente dmesg

dmesg Visualizza il buffer dei messaggi del kernel Linux. In termini più semplici, vi si trovano eventi di basso livello: rilevamento hardware, driver, errori del disco, USB, rete, ACPI, firmware, memoria, montaggio dei dispositivi, ecc.

Su un computer moderno, alcuni di questi messaggi sono visibili anche nel log di systemd. Per questo motivo, ti consiglio di tenere a portata di mano entrambi i comandi: dmesg per una lettura veloce, journalctl -k per una lettura più chiara nel registro di sistema.

dmesg

Su alcune distribuzioni, la lettura potrebbe richiedere i privilegi di amministratore. Se ricevi un errore di autorizzazione, riprova con sudo.

sudo dmesg

La pagina di manuale di dmesg Descrive in dettaglio tutte le opzioni. Per la diagnostica di routine, bastano già pochi comandi.

Leggi le ultime righe senza annegare

La prima cosa da fare è evitare di visualizzare 800 righe contemporaneamente. Quando si verifica un problema, è bene iniziare dalla fine del log del kernel.

sudo dmesg -T | tail -n 80

L’opzione -T rende le date più leggibili. Nota che, sebbene questo formato sia comodo per una lettura rapida, non sostituisce un’analisi approfondita dei giornali se stai confrontando eventi molto specifici. Per questo, journalctl rimane più comodo.

È anche possibile visualizzare solo avvisi ed errori:

sudo dmesg -T --level=err,warn

Se il comando non restituisce nulla, non è necessariamente un brutto segno. Significa semplicemente che il kernel non ha registrato errori o avvisi recenti in quel buffer.

Risoluzione di un problema relativo a USB, disco o rete.

Il vero risparmio di tempo si ottiene applicando i filtri. Se stai cercando di capire perché una chiavetta USB non viene riconosciuta, perché un disco rigido non funziona correttamente o perché una scheda di rete si riavvia, non leggere tutto. Cerca le parole che corrispondono all’hardware.

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

Per inciso, le frasi a cui prestare attenzione sono spesso piuttosto autoesplicative: Errore I/O, reset, comando fallito, richiesta di aggiornamento del blocco, errore di lettura, errore di scritturaSe vedi ripetutamente questo tipo di messaggio, non iniziare riscrivendolo. /etc/fstabInnanzitutto controlla il cavo, il case USB, l’alimentatore e infine le condizioni del disco.

Per un dispositivo USB, fare riferimento incrociato con i comandi già visti nella guida su Porte USB in Linux o quello sul montaggio di una chiavetta USB. dmesg ti dice cosa osserva il nucleo, ma lsusb, lsblk E findmnt Aiuta a capire cosa viene effettivamente rilevato e montato.

lsblk -o NOME,DIMENSIONE,TIPOFS,ETICHETTA,UUID,PUNTI DI MONTAGGIO
findmnt
lsusb

Per un problema di rete, cerca il nome dell’interfaccia o termini come collegamento, rinominato, firmware, tempo scaduto, giù, suSe l’argomento riguarda principalmente le porte TCP in ascolto, passare a ss o netstat, Perché dmesg non sostituisce un inventario di rete.

Segui le istruzioni visualizzate durante la connessione dell’apparecchiatura.

Quando un dispositivo si disconnette in modo intermittente, il modo più semplice è monitorare i messaggi in tempo reale. Apri un terminale, esegui il comando, quindi collega il disco, l’unità USB o l’adattatore di rete.

sudo dmesg -wH

-w seguire nuovi messaggi. -H rende l’output più leggibile. Se preferisci rimanere nel log di systemd, usa:

sudo journalctl -k -f

La pagina di manuale di journalctl Questo è utile se si desidera affinare la ricerca in base all’avvio, alla priorità o all’unità. Per un semplice guasto hardware, il monitoraggio in tempo reale è spesso sufficiente per verificare se il kernel rileva il salto e, in tal caso, l’errore.

Confronta con journalctl per l’ultimo avvio

dmesg È veloce, ma non mi fermo qui se il problema riguarda un server o si ripresenta dopo un riavvio. Il log di systemd permette di rileggere i messaggi del kernel dall’avvio corrente, con i suoi filtri.

sudo journalctl -k -b --no-pager
sudo journalctl -k -b -p warning..alert --no-pager

Il primo comando visualizza i messaggi del kernel relativi al processo di avvio corrente. Il secondo, invece, conserva solo avvisi, errori e allerte. Questo è utile dopo un riavvio in cui un mount non è riuscito, quando un’interfaccia di rete non è montata correttamente o quando un driver segnala un problema all’avvio.

Se hai appena modificato /etc/fstabNon riavviare solo per vedere. Prima testa l’assemblaggio e controlla la presenza di errori. La guida su fstab in Linux Questo punto va spiegato nel dettaglio, perché un cavo difettoso può bloccare l’avvio più velocemente di quanto si possa immaginare.

sudo mount -a
findmnt
sudo journalctl -k -b -p warning..alert --no-pager

Sapere quando il messaggio indica un vero problema hardware

Una linea isolata in entrata dmesg Questo non è sempre sufficiente per trarre una conclusione. Un dispositivo USB può riavviarsi una volta senza che ciò rappresenti un problema serio. Tuttavia, un errore che si ripete a ogni copia, un’unità che si disconnette e si riconnette alternativamente o errori di I/O ripetuti dovrebbero essere presi sul serio.

In questo caso, eseguo tre controlli prima di modificare la configurazione:

  • Se il dispositivo è esterno, sostituire il cavo, la porta USB o l’alimentatore;
  • verificare che il disco sia identificato correttamente con lsblk E bambino ;
  • Verifica lo stato SMART per capire se si tratta di un disco o di un’unità SSD.
lsblk -o NOME,DIMENSIONE,MODELLO,SERIALE,TIPOFS,PUNTI DI MONTAGGIO
sudo blkid
sudo smartctl -a /dev/sdX

Sostituire /dev/sdX dal disco corretto. Non copiare ciecamente questo comando su una macchina con più dischi. In caso di dubbi, fermati a lsblk e identificare il modello, le dimensioni e il punto di montaggio prima di procedere ulteriormente.

Prima di correggere, annota l’errore esatto.

Il miglior utilizzo di dmesgL’obiettivo non è trovare una soluzione miracolosa. È individuare un errore specifico prima di intervenire. Copia alcune righe intorno al messaggio, annota l’ora, il dispositivo coinvolto e l’azione che ha causato il problema.

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

Solo allora potrai decidere: quale cavo sostituire, quale disco eseguire il backup, quale driver controllare, quale regola di fstab correggere, quale firmware installare o quale servizio monitorare. Questo passaggio può sembrare banale, ma previene molte diagnosi errate, soprattutto in caso di guasti intermittenti.

Se stai amministrando una macchina remota, fai ancora più attenzione. Un errore del disco o della rete rilevato dal kernel può, a lungo andare, interrompere l’accesso. Mantieni una sessione aperta, fornisci l’accesso alla console se possibile e non riavviare finché non hai capito cosa sta cercando di comunicarti il ​​kernel.