Il kernel Linux è il nucleo del sistema operativo che controlla l'accesso alle risorse di sistema, come CPU, dispositivi I/O, memoria fisica e file system. Il kernel scrive vari messaggi nel buffer ad anello del kernel durante il processo di avvio e quando il sistema è in esecuzione. Questi messaggi includono varie informazioni sul funzionamento del sistema.
Il buffer dell'anello del kernel è una parte della memoria fisica che contiene i messaggi di registro del kernel. Ha una dimensione fissa, il che significa che una volta che il buffer è pieno, i record di log più vecchi vengono sovrascritti.
Il dmesg L'utilità della riga di comando viene utilizzata per stampare e controllare il buffer dell'anello del kernel in Linux e altri sistemi operativi simili a Unix. È utile per esaminare i messaggi di avvio del kernel e per il debug di problemi relativi all'hardware.
In questo tutorial tratteremo le basi di dmesg comando.
Utilizzo di dmesg Comando #
La sintassi per dmesg il comando è il seguente:
dmesg [OPTIONS]
Quando viene invocato senza alcuna opzione dmesg scrive tutti i messaggi dal buffer dell'anello del kernel nello standard output:
dmesg
Per impostazione predefinita, tutti gli utenti possono eseguire dmesg comando. Tuttavia, su alcuni sistemi, l'accesso a dmesg potrebbe essere limitato per utenti non root. In questa situazione, quando si invoca dmesg riceverai un messaggio di errore come di seguito:
dmesg: read kernel buffer failed: Operation not permitted
Il parametro del kernel kernel.dmesg_restrict specifica se gli utenti senza privilegi possono utilizzare dmesg per visualizzare i messaggi dal buffer di log del kernel. Per rimuovere le restrizioni, impostalo a zero:
sudo sysctl -w kernel.dmesg_restrict=0
Di solito, l'output contiene molte righe di informazioni, quindi solo l'ultima parte dell'output è visualizzabile. Per visualizzare una pagina alla volta, reindirizza l'output a un'utilità cercapersone come less o more :
dmesg --color=always | less
Il --color=always viene utilizzato per preservare l'output colorato.
Se vuoi filtrare i messaggi del buffer, usa grep . Ad esempio, per visualizzare solo i messaggi relativi all'USB, digitare:
dmesg | grep -i usb
dmesg legge i messaggi generati dal kernel da /proc/kmsg file virtuale. Questo file fornisce un'interfaccia al buffer circolare del kernel e può essere aperto solo da un processo. Se syslog processo è in esecuzione sul tuo sistema e provi a leggere il file con cat o less , il comando si bloccherà.
Il syslog daemon scarica i messaggi del kernel in /var/log/dmesg , quindi puoi anche usare quel file di registro:
cat /var/log/dmesg Formattare dmesg Uscita #
Il dmesg Il comando fornisce una serie di opzioni che ti aiutano a formattare e filtrare l'output.
Una delle opzioni più utilizzate di dmesg è -H (--human ), che abilita l'output leggibile. Questa opzione reindirizza l'output del comando in un cercapersone:
dmesg -H
Per stampare timestamp leggibili dall'uomo, usa il -T (--ctime ) opzione:
dmesg -T [Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
Il formato dei timestamp può anche essere impostato utilizzando il --time-format <format> opzione, che può essere ctime, reltime, delta, notime o iso. Ad esempio, per utilizzare il formato delta, digitare:
dmesg --time-format=delta Puoi anche combinare due o più opzioni:
dmesg -H -T
Per guardare l'output di dmesg comando in tempo reale usa il -w (--follow ) opzione:
dmesg --follow Filtraggio dmesg Uscita #
Puoi limitare il dmesg output a determinate strutture e livelli.
La struttura rappresenta il processo che ha creato il messaggio. dmesg supporta le seguenti funzionalità di registro:
kern- messaggi del kerneluser- messaggi a livello di utentemail- sistema di postadaemon- demoni di sistemaauth- messaggi di sicurezza/autorizzazionesyslog- messaggi interni di syslogdlpr- sottosistema stampante di lineanews- sottosistema notizie di rete
Il -f (--facility <list> ) consente di limitare l'output a strutture specifiche. L'opzione accetta uno o più servizi separati da virgole.
Ad esempio, per visualizzare solo i messaggi del kernel e dei demoni di sistema dovresti usare:
dmesg -f kern,daemon
Ogni messaggio di registro è associato a un livello di registro che mostra l'importanza del messaggio. dmesg supporta i seguenti livelli di log:
emerg- il sistema è inutilizzabilealert- l'azione deve essere intrapresa immediatamentecrit- condizioni criticheerr- condizioni di errorealert- condizioni di avvisoalert- condizione normale ma significativainfo- informativodebug- messaggi a livello di debug
Il -l (--level <list> ) l'opzione limita l'output a livelli definiti. L'opzione accetta uno o più livelli separati da virgole.
Il comando seguente visualizza solo i messaggi di errore e critici:
dmesg -l err,crit Cancellazione del buffer dell'anello #
Il -C (--clear ) consente di cancellare il buffer dell'anello:
sudo dmesg -C Solo root o utenti con privilegi sudo possono cancellare il buffer.
Per stampare il contenuto del buffer prima di cancellare, usa -c (--read-clear ) opzione:
sudo dmesg -c
Se vuoi salvare il dmesg corrente accede a un file prima di cancellarlo, reindirizza l'output a un file:
dmesg > dmesg_messages Conclusione #
Il dmesg Il comando consente di visualizzare e controllare il buffer dell'anello del kernel. Può essere molto utile durante la risoluzione dei problemi del kernel o dell'hardware.
Digita man dmesg nel tuo terminale per informazioni su tutti i dmesg disponibili opzioni.
Se hai domande o feedback, sentiti libero di lasciare un commento.