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.
Anche montare un disco CD-ROM è considerato un cambiamento, perché hai inserito il contenuto del disco CD-ROM nell'albero delle directory.
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
attraversogrep
e ricerca correlati stringhe o identificatori come il produttore del prodotto o i numeri di modello. - Tubo
dmesg
attraversogrep
e cerca termini generici Che cosa “Gpu” oh “immagazzinamento”, o termini come “errore”, “fallito” oh “incapace”. - Utilizzare il
--follow
opzione e orologiodmesg
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);