Introduzione
Il dmesg
command è un'utilità Linux che visualizza i messaggi relativi al kernel recuperati dal buffer ad anello del kernel. Il buffer ad anello memorizza le informazioni sull'hardware, l'inizializzazione del driver del dispositivo e i messaggi dai moduli del kernel che hanno luogo durante l'avvio del sistema.
Il dmesg
Il comando è prezioso per la risoluzione dei problemi relativi a errori hardware, avvisi e per la diagnosi di guasti del dispositivo.
In questo tutorial imparerai come usare dmesg
comando in Linux.
Prerequisiti
- Un sistema informatico che esegue Linux.
- Un account utente con privilegi di amministratore.
Sintassi e opzioni
Il dmesg
di base la sintassi del comando è:
dmesg [options]
La tabella seguente elenca i dmesg
più comunemente usati opzioni:
Opzione | Descrizione |
---|---|
-C, --clear | Cancella il buffer dell'anello. |
-c, --read-clear | Stampa il contenuto del buffer ad anello e quindi cancella. |
-f, --facility [list] | Limita l'output alla funzione separata da virgole specificata [list] . |
-H, --human | Abilita un output leggibile dall'uomo. |
-L, --color[=auto|never|always] | Aggiunge colore all'output. Omettendo il [auto|never|always] il valore predefinito per gli argomenti è auto. |
-l, --level [list] | Limita l'output all'elenco di livelli separato da virgole specificato. |
--noescape | Disabilita la funzione di escape automatico dei caratteri non stampabili e potenzialmente non sicuri. |
-S, --syslog | Istruisce dmesg per usare l'interfaccia del kernel syslog per leggere i messaggi del kernel. L'impostazione predefinita è utilizzare /dev/kmsg invece di syslog . |
-s, --buffer-size [size] | Utilizza la dimensione del buffer specificata per interrogare il buffer dell'anello del kernel. Il valore predefinito è 16392. |
-T, --ctime | Stampa timestamp leggibili dall'uomo. |
-t, --notime | Istruisce dmesg non stampare i timestamp del kernel. |
--time-format [format] | Stampa i timestamp utilizzando il [format] specificato . I formati accettati sono ctime , reltime , delta e iso (un dmesg implementazione del formato ISO-8601). |
-w, --follow | Mantiene dmesg in esecuzione e in attesa di nuovi messaggi. La funzione è disponibile solo su sistemi con /dev/kmsg leggibile file. |
-x, --decode | Decodifica la struttura e i numeri di livello in prefissi leggibili dall'uomo. |
-h, --help | Visualizza il file della guida con tutte le opzioni disponibili. |
Esempi di comando dmesg Linux
Gli esempi sono comuni dmesg
casi d'uso dei comandi.
Visualizza tutti i messaggi dal buffer dell'anello del kernel
Invocando dmesg
senza alcuna opzione restituisce l'intero buffer del kernel, senza interruzioni e senza alcun modo per navigare nell'output.
sudo dmesg
L'esempio sopra è un dmesg
parziale uscita del comando. Per una navigazione più semplice e una migliore leggibilità, invia il pipe dmesg
output in un cercapersone terminale come less
, more
oppure usa grep .
Ad esempio:
sudo dmesg | less
Tubazioni dmesg
in less
consente di utilizzare la funzione di ricerca per individuare ed evidenziare gli elementi. Attiva la ricerca premendo / . Passa alla schermata successiva utilizzando la Barra spaziatrice o invertire utilizzando la B chiave. Uscire dall'output premendo Q .
Visualizza messaggi colorati
Per impostazione predefinita, dmesg
produce un output colorato. Se l'output non è colorato, usa il -L
opzione per colorarlo.
sudo dmesg -L
Per disattivare gli output colorati, aggiungi il --color=never
opzione per dmesg
. Esegui il seguente comando:
sudo dmesg --color=never
Il dmesg
predefinito l'output ha ora un colore uniforme.
Visualizza i messaggi non appena arrivano
Monitora il buffer dell'anello del kernel in tempo reale usando il --follow
opzione. L'opzione indica al comando di attendere nuovi messaggi relativi all'hardware o ai moduli del kernel dopo l'avvio del sistema.
Esegui il seguente dmesg
comando per abilitare il monitoraggio del buffer dell'anello del kernel in tempo reale:
sudo dmesg --follow
Il comando visualizza tutti i nuovi messaggi nella parte inferiore della finestra del terminale. Interrompi il processo utilizzando Ctrl+C .
Cerca un termine specifico
Quando cerchi problemi specifici o messaggi hardware, invia il pipe dmesg
output in grep
per cercare una stringa o uno schema particolare.
Ad esempio, se stai cercando messaggi sulla memoria, esegui il comando seguente:
dmesg | grep -i memory
L'output mostra tutte le righe del buffer contenente la memory
corda. Il -i
(ignora maiuscole/minuscole) ignora la sensibilità alla cura.
In alternativa, se stai cercando messaggi di buffer su USB, porte seriali, rete o dischi rigidi, esegui i seguenti comandi:
USB
dmesg | grep -i usb
Porte seriali
dmesg | grep -i tty
Rete
dmesg | grep -i eth
Dischi rigidi
sudo dmesg | grep -i sda
Cerca più termini contemporaneamente aggiungendo il -E
opzione per grep
e fornendo i termini di ricerca racchiusi tra virgolette, separati da delimitatori di pipe. Ad esempio:
sudo dmesg | grep -E "memory|tty"
L'output stampa tutti i messaggi contenenti uno qualsiasi dei termini di ricerca.
Leggi e cancella i registri dmesg
Il -c
(--read-clear
) consente di cancellare il dmesg
log dopo averlo stampato. La cancellazione del buffer assicura di avere solo messaggi validi dall'ultimo riavvio.
Esegui il seguente comando:
sudo dmesg -c
Riesecuzione di dmesg
non ha output poiché il registro è stato cancellato.
Abilita timestamp nei registri dmesg
Abilita timestamp in dmesg
output aggiungendo il -H
(--human
), che produce un output leggibile e reindirizza automaticamente l'output a un cercapersone (less
).
Esegui il seguente comando:
sudo dmesg -H
Il comando aggiunge un timestamp con la data e l'ora risolte in minuti. Gli eventi nello stesso minuto sono etichettati con secondi e nanosecondi.
Esci dal cercapersone premendo Q .
Abilita timestamp leggibili dall'uomo
Abilita timestamp leggibili dall'uomo utilizzando il -T
(--ctime
) opzione. L'opzione rimuove la precisione di nanosecondi dall'output, ma i timestamp sono più facili da seguire.
sudo dmesg -T
I timestamp nell'output sono date e ora standard e la risoluzione è in minuti. Lo stesso timestamp viene anteposto a ogni azione avvenuta nello stesso minuto.
Scegli il formato del timestamp
Usa il --time-format [format]
opzione per scegliere il formato del timestamp. I formati disponibili sono:
ctime
reltime
delta
notime
iso
Ad esempio, per utilizzare iso
formattare, eseguire:
sudo dmesg --time-format=iso
Il formato del timestamp è ora YYYY-MM-DD<T>HH:MM:SS,<microseconds>←+><timezone offset from UTC>
.
Limita l'output di dmesg a una struttura specifica
Filtra il dmesg
output in una categoria specifica utilizzando il -f
opzione. Il sistema raggruppa i messaggi nel buffer dell'anello del kernel nelle seguenti strutture (categorie):
kern
. Messaggi del kernel.user
. Messaggi a livello di utente.mail
. Messaggi del sistema di posta.daemon
. Messaggi sui demoni di sistema.auth
. Messaggi di autorizzazione.syslog
.syslogd
interno messaggi.lpr
. Messaggi del sottosistema della stampante di linea.news
. Messaggi del sottosistema delle notizie di rete.
Ad esempio, il comando seguente limita l'output ai messaggi relativi al syslog
struttura:
sudo dmesg -f syslog
Per elencare i messaggi da più strutture, specificare un elenco di strutture separate da virgole. Ad esempio:
sudo dmesg -f syslog,daemon
Filtra livelli registro
Il dmesg
Il comando associa ogni messaggio del buffer a un livello di log che caratterizza l'importanza del messaggio. I livelli disponibili sono:
emerg
. Messaggi di emergenza.alert
. Avvisi che richiedono un'azione immediata.crit
. Condizioni critiche.err
. Messaggi di errore.alert
. Messaggi di avviso.alert
. Condizioni normali ma significative.info
. Messaggi informativi.debug
. Messaggi a livello di debug.
Istruire dmesg
per stampare solo i messaggi che corrispondono a un certo livello usando il -l
opzione, seguito dal nome del livello. Ad esempio:
sudo dmesg -l info
L'esempio sopra estrae solo i messaggi informativi dal registro.
Combina più livelli in un elenco separato da virgole per recuperare i messaggi da quei livelli. Ad esempio:
sudo dmesg -l notice,warn
L'output combina i messaggi dai livelli di registro specificati.
Combinazione di struttura e livello
Mostra in modo esplicito la funzione di ciascun messaggio del buffer e il livello di registro all'inizio di ogni riga utilizzando il -x
opzione (decodifica).
Ad esempio:
sudo dmesg -x
Nell'esempio sopra, ogni riga è anteposta con la struttura e il livello di registro appropriati.
Leggi il file di registro dmesg
Ogni volta che il sistema si avvia, i messaggi dal buffer circolare del kernel vengono archiviati in /var/log/dmesg file. Il dmesg
comando mostra il contenuto del file di registro. In caso di problemi con l'utilizzo di dmesg
comando, apri il file di registro in un editor di testo per visualizzare il contenuto.
Nell'esempio seguente, utilizziamo il comando cat per visualizzare il file di registro e inviarlo tramite pipe a grep
per cercare una particolare stringa presente nel registro:
cat dmesg | grep amd
Il comando restituisce tutto amd
istanze string nel file di registro.
Cerca un'unità CD
Verificare se una macchina remota è dotata di un'unità CD controllando il registro dei messaggi del buffer. Ad esempio, il comando seguente mostra tutti i messaggi sui dispositivi CD inizializzati all'avvio:
sudo dmesg | grep -iE 'cdrom|dvd|cd/rw|cd-rom'
I risultati mostrano informazioni sulle unità CD-ROM disponibili, inclusa l'unità CD-ROM virtuale su questa macchina.
Rimuovi requisito sudo
La rimozione del requisito per i privilegi di superutente consente a qualsiasi utente di eseguire dmesg
e visualizzare i messaggi del buffer dell'anello del kernel. Esegui il comando seguente per rimuovere il requisito sudo:
sudo sysctl -w kernel.dmesg_restrict=0
Dopo aver impostato le restrizioni su 0
, qualsiasi utente del sistema può eseguire dmesg
.