Come usare il comando dmesg in Linux

Contenuti

Un indicatore di terminale stilizzato su un laptop Linux.

il dmesg Il comando ti consente di guardare all'interno del mondo nascosto dei processi di avvio di Linux. Rivedere e monitorare i messaggi dei driver e delle periferiche hardware dal buffer ad anello del kernel con “l'amico del fault finder”.

Come funziona Linux Ring Buffer

Su computer Linux e Unix-like, avvio e avvio sono due fasi distinte nella sequenza di eventi che si verificano all'accensione del computer.

il processi di avvio (BIOS oh UEFA, MBR, e PASTO) portare l'inizializzazione del sistema al punto in cui il kernel carica in memoria e si connette al ramdisk iniziale (initrd o initramfs), e sistema è iniziato.

il processi di avvio quindi prendi il testimone e completa l'inizializzazione del sistema operativo. Nelle prime fasi di inizializzazione, registra demoni come syslogd oh rsyslogd non ancora in funzione. Per evitare di perdere messaggi di errore e avvisi evidenti da questa fase di inizializzazione, il kernel contiene a tampone ad anello che usi come archivio di messaggi.

Un buffer circolare è uno spazio di memoria riservato ai messaggi. È semplice nel design e di dimensioni fisse. Quando è pieno, i messaggi più recenti sovrascrivono i messaggi più vecchi. Concettualmente, può essere considerato come un “tampone circolare. “

Il buffer circolare del kernel memorizza informazioni come i messaggi di inizializzazione del driver del dispositivo, messaggi hardware e messaggi del modulo kernel. Perché contiene questi messaggi di avvio di basso livello, il buffer circolare è un buon posto per iniziare un'indagine su errori hardware o altri problemi di avvio.

Ma non andare a mani vuote. Trasportare dmesg con te.

Il comando dmesg

il dmesg il comando ti permette per rivedere i messaggi che sono memorizzati nel buffer circolare. Per impostazione predefinita, deve usare sudo usare dmesg.

sudo dmesg

Tutti i messaggi dal buffer circolare vengono visualizzati nella finestra del terminale.

È stato un diluvio. Ovviamente, quello che dobbiamo fare è canalizzarlo less:

sudo dmesg | meno

Ora possiamo scorrere i messaggi alla ricerca di elementi di interesse.

Puoi usare la funzione di ricerca all'interno less per individuare ed evidenziare elementi e termini che ti interessano. Avviare la funzione di ricerca premendo il tasto barra in avanti “/” Su less.

IMPARENTATO: Come usare il comando less in Linux

Eliminando la necessità di sudo

Se vuoi evitare di dover usare sudo ogni volta che usi dmesg, puoi usare questo comando. Ma tieni a mente: consente a chiunque disponga di un account utente di utilizzare il tuo computer dmesg senza dover usare sudo.

sudo sysctl -w kernel.dmesg_restrict=0

Forza l'output del colore

Predefinito, dmesg sarà probabilmente impostato per produrre output a colori. Se non è così, puoi dirlo dmesg per colorare il tuo output usando il -L opzione (colore).

sudo dmesg -L

Forzare dmesg per usare sempre uno schermo a colori per impostazione predefinita, usa questo comando:

sudo dmesg --color=sempre

Timestamp umani

Predefinito, dmesg utilizzare una notazione di timestamp di secondi e nanosecondi dall'avvio del kernel. Perché questo sia reso in un formato più a misura d'uomo, usa el -H opzione (umano).

sudo dmesg -H

Questo fa accadere due cose.

  • L'output viene visualizzato automaticamente in less.
  • I timestamp mostrano un timestamp con la data e l'ora, con una risoluzione di minuti. I messaggi che si sono verificati in ogni minuto sono etichettati con i secondi e i nanosecondi dall'inizio di quel minuto.

Timestamp leggibili dall'uomo

Se non hai bisogno di precisione al nanosecondo, ma vuoi timestamp più facili da leggere rispetto a quelli predefiniti, utilizzare il -T opzione (leggibile dagli umani). (C'è un po' di confusione. -H è l'opzione “umano”, -T è l'opzione “leggibile dagli umani”).

sudo dmesg -T

I timestamp sono rappresentati come date e ore standard, ma la risoluzione è ridotta a un minuto.

Tutto ciò che è successo in un solo minuto ha lo stesso timestamp. Se tutto ciò che ti interessa è la sequenza degli eventi, è abbastanza. Cosa c'è di più, nota che lo restituiscono al prompt dei comandi. Questa opzione non si richiama automaticamente less.

Visualizza eventi dal vivo

Per visualizzare i messaggi non appena raggiungono il buffer circolare del kernel, utilizzare il --follow (aspetta i messaggi) opzione. Quella frase può sembrare un po' strana. Se il buffer circolare viene utilizzato per memorizzare i messaggi per gli eventi che si verificano durante la sequenza di avvio, Come possono i messaggi live arrivare al buffer circolare una volta che il computer è attivo e funzionante??

Tutto ciò che provoca un cambiamento nell'hardware connesso al computer causerà l'invio di messaggi al buffer circolare del kernel. Aggiorna o aggiungi un modulo del kernel e vedrai i messaggi del buffer circolare su tali modifiche. Se colleghi un'unità USB o colleghi o disconnetti un dispositivo Bluetooth, vedrai messaggi nel dmesg produzione. Anche l'hardware virtuale farà apparire nuovi messaggi nel buffer circolare. Accendi una macchina virtuale e vedrai arrivare nuove informazioni nel buffer circolare.

sudo dmesg --follow

Nota che non tornerai al prompt dei comandi. Quando compaiono nuovi messaggi, sono mostrati da dmesg nella parte inferiore della finestra del terminale.

Output di sudo dmesg --follow na terminal window

Anche montare un disco CD-ROM è considerato un cambiamento, perché hai inserito il contenuto del disco CD-ROM nell'albero delle directory.

Messaggi del buffer circolare Dmesg come risultato del montaggio di un disco CD-ROM

Per uscire dal feed in tempo reale, premere Ctrl+C.

Recupera gli ultimi dieci messaggi

Usa il comando di coda per recuperare gli ultimi dieci messaggi del buffer dell'anello del kernel. Certo, può recuperare un numero qualsiasi di messaggi. Dieci è solo il nostro esempio.

sudo dmesg | Ultimo -10

Gli ultimi dieci messaggi vengono recuperati ed elencati nella finestra del terminale.

Cerca termini specifici

Canalizzare l'uscita di dmesg attraverso grep per cercare stringhe o pattern particolari. Qui stiamo usando il -i (ignora maiuscole e minuscole) in modo che il caso di stringhe corrispondenti venga ignorato. i nostri risultati includeranno “USB” e “USB” e qualsiasi altra combinazione di minuscole e maiuscole.

sudo dmesg | grep -i usb

I risultati di ricerca evidenziati sono in maiuscolo e minuscolo.

Possiamo isolare i messaggi che contengono riferimenti al primo SCSI disco rigido nel sistema sda. (Veramente, sda è usato anche oggi per il primo disco rigido SATAe per le unità USB).

sudo dmesg | grep -i sda

Tutti i messaggi che menzionano sda vengono recuperati ed elencati nella finestra del terminale.

Produrre grep cerca più termini contemporaneamente, Utilizzare il -E (estendere l'espressione regolare) opzione. È necessario specificare i termini di ricerca all'interno di una stringa tra virgolette con una barra verticale “|” delimitatori tra i termini di ricerca:

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

Qualsiasi messaggio che menziona uno dei termini di ricerca viene visualizzato nella finestra del terminale.

Usa i livelli di registro

Ogni messaggio registrato nel buffer circolare del kernel ha un livello allegato. Il livello rappresenta l'importanza delle informazioni nel messaggio. I livelli sono:

  • emergente: Il sistema non può essere utilizzato.
  • mettere in guardia: Bisogna agire immediatamente.
  • critico: Condizioni critiche.
  • err: Condizioni di errore.
  • avvisare: Condizioni di avviso.
  • avviso: Condizione normale ma significativa.
  • Informazioni: Informativo.
  • eseguire il debug: Messaggi a livello di debug.

possiamo fare dmesg estrarre i messaggi che corrispondono a un particolare livello utilizzando il -l (livello) e passando il nome del livello come parametro della riga di comando. Per visualizzare solo i messaggi di livello “informativo”, usa questo comando:

sudo dmesg -l info

Tutti i messaggi elencati sono messaggi informativi. Non contengono errori o avvisi, solo notifiche utili.

Combina due o più livelli di registro in un comando per recuperare messaggi da più livelli di registro:

sudo dmesg -l debug,avviso

L'uscita di dmesg è una combinazione di messaggi da ogni livello di registro:

Le categorie di strutture

il dmesg I messaggi sono raggruppati in categorie denominate “installazioni”. L'elenco delle strutture è:

  • kern: Messaggi del kernel.
  • Nome utente: Messaggi a livello di utente.
  • posta: Sistema di posta.
  • diavolo: Demoni di sistema.
  • autenticazione: Messaggi di sicurezza / autorizzazione.
  • syslog: Messaggi syslogd interni.
  • lpr: Sottosistema stampante di linea.
  • Notizia: Sottosistema di notizie di rete.

possiamo chiedere dmesg per filtrare l'output per mostrare solo i messaggi su un'installazione specifica. Per farlo, dobbiamo usare il -f (installazione) opzione:

sudo dmesg -f demone

dmesg elenca tutti i messaggi relativi ai demoni nella finestra del terminale.

Come abbiamo fatto con i livelli, possiamo chiedere dmesg per elencare i messaggi da più di una struttura alla volta:

sudo dmesg -f syslog, demone

Il risultato è una combinazione di messaggi di log di syslog e demone.

Combinazione di installazione e livello

il -x (decodificare) l'opzione fa dmesg mostra struttura e livello come prefissi leggibili dall'uomo per ogni riga.

sudo dmesg -x

L'installazione e il livello possono essere visualizzati all'inizio di ogni riga:

La prima sezione evidenziata è un messaggio della funzione “kernel” con un livello di “avviso”. La seconda sezione evidenziata è un messaggio della funzione “kernel” con un livello di “informazione”.

È fantastico, ma perché?

In poche parole, Trovare l'errore.

Se hai problemi con un componente hardware che non viene riconosciuto o non si comporta correttamente, dmesg può far luce sull'argomento.

  • Usare dmesg per rivedere i messaggi del più alto livello attraverso ogni livello inferiore, alla ricerca di errori o avvisi che menzionano l'elemento hardware o che potrebbero essere correlati al problema.
  • Usare dmesg per cercare qualsiasi menzione dell'appropriato installazioni per vedere se contengono informazioni utili.
  • Tubo dmesg attraverso grep e ricerca correlati stringhe o identificatori come il produttore del prodotto o i numeri di modello.
  • Tubo dmesg attraverso grep e cerca termini generici Che cosa “Gpu” oh “immagazzinamento”, o termini come “errore”, “fallito” oh “incapace”.
  • Utilizzare il --follow opzione e orologio dmesg messaggi in tempo reale.

Buona caccia.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.