Sai che il kernel Linux carica diversi driver di dispositivo all'avvio del sistema? Infatti, quando il sistema è attivo e funzionante e si collega un dispositivo hardware, viene caricato anche il driver del dispositivo corrispondente. Naturalmente, il kernel fa anche molte altre cose. E se volessi conoscere le informazioni relative a queste attività del kernel?
Bene, esiste un comando - soprannominato dmesg - che puoi usare se vuoi accedere ai messaggi stampati dal kernel. In questo tutorial, capiremo come funziona lo strumento dmesg utilizzando alcuni esempi di facile comprensione.
Comando Linux dmesg
Il comando dmesg consente di stampare o controllare il buffer dell'anello del kernel. Di seguito è riportata la sua sintassi:
dmesg [options]
Ed ecco come lo spiega la pagina man dello strumento:
dmesg is used to examine or control the kernel ring buffer. The default action is to display all
messages from the kernel ring buffer.
Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti un'idea migliore di come funziona il comando dmesg.
Q1. Come usare il comando dmesg?
Puoi iniziare a usare il comando dmesg senza qualsiasi opzione della riga di comando.
dmesg
Ad esempio, ecco una piccola parte dell'output del comando prodotto nel mio caso:
Q2. Come limitare l'output solo a errori e avvisi?
Se esegui dmesg sul tuo sistema, noterai che emette una pletora di informazioni. A seconda di ciò che stai cercando, potresti voler filtrare o limitare l'output. Da parte sua, dmesg ti offre questa capacità attraverso i "livelli". Di seguito è riportato l'elenco completo dei livelli (insieme alla loro spiegazione):
emerg - system is unusable
alert - action must be taken immediately
crit - critical conditions
err - error conditions
warn - warning conditions
notice - normal but significant condition
info - informational
debug - debug-level messages
Quindi, ad esempio, se vuoi limitare l'output solo a errori e avvisi, puoi farlo nel modo seguente:
dmesg --level=err,warn
Nel mio caso, ecco una parte dell'output prodotto dal comando precedente:
T3. Come fare in modo che dmesg produca timestamp in output?
A volte, potresti voler associare un timestamp ai messaggi prodotti da dmesg. Questo può essere fatto usando l'opzione della riga di comando -T, che produce timestamp leggibili dall'uomo.
dmesg -T
Di seguito è riportato un esempio di output:
Quindi puoi vedere che un timestamp è prefissato in ogni messaggio.
Q4. Come rendere le informazioni di visualizzazione di dmesg specifiche per un dispositivo?
Si supponga di volere che dmesg visualizzi solo le informazioni relative all'interfaccia eth0. Ecco come puoi farlo:
dmesg | grep -i eth0
Di seguito è riportato un esempio di output:
Q5. Come fare in modo che dmesg visualizzi solo i messaggi dello spazio utente?
Se vuoi limitare l'output di dmesg solo ai messaggi dello spazio utente, usa l'opzione della riga di comando -u.
dmesg -u
Conclusione
D'accordo, dmesg non è il tipo di comando di cui avrai bisogno ogni giorno. Ma questo è lo strumento a cui rivolgersi quando qualcuno (a cui hai chiesto aiuto su un determinato argomento) ti chiede di fornire messaggi del kernel. Ho visto questo caso principalmente nei forum degli utenti online, dove utenti esperti chiedono l'output del kernel.
Qui, in questo tutorial, abbiamo discusso del comando dmesg dal punto di vista dei principianti (solo per iniziare). Una volta che hai finito di esercitarti su tutto ciò di cui abbiamo discusso qui, vai alla pagina man dello strumento.