GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Dmesg in Linux

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 kernel
  • user - messaggi a livello di utente
  • mail - sistema di posta
  • daemon - demoni di sistema
  • auth - messaggi di sicurezza/autorizzazione
  • syslog - messaggi interni di syslogd
  • lpr - sottosistema stampante di linea
  • news - 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 è inutilizzabile
  • alert - l'azione deve essere intrapresa immediatamente
  • crit - condizioni critiche
  • err - condizioni di errore
  • alert - condizioni di avviso
  • alert - condizione normale ma significativa
  • info - informativo
  • debug - 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.


Linux
  1. Comando Linux dmesg - Stampa il buffer dell'anello del kernel

  2. Comando Linux mv

  3. Linux du comando

  4. comando IP Linux

  5. Esempi di comandi dmesg in Linux

Comando W in Linux

Al comando in Linux

Comando Modprobe in Linux

Comando Sysctl in Linux

Comando Df in Linux

comando sysctl in Linux