Android

Comanda Dmesg în linux

7 Using dmesg to read the kernel ring buffer

7 Using dmesg to read the kernel ring buffer

Cuprins:

Anonim

Nucleul Linux este nucleul sistemului de operare care controlează accesul la resursele sistemului, cum ar fi CPU, dispozitive I / O, memorie fizică și sisteme de fișiere. Nucleul scrie diverse mesaje în bufferul de apel al kernel-ului în timpul procesului de pornire și când sistemul este în funcțiune. Aceste mesaje includ diverse informații despre funcționarea sistemului.

Tamponul de inel al nucleului este o porțiune din memoria fizică care deține mesajele de jurnal ale nucleului. Are o dimensiune fixă, ceea ce înseamnă că, odată ce bufferul este complet, înregistrările de jurnale mai vechi sunt suprascrise.

Utilitatea liniei de comandă dmesg este utilizată pentru a imprima și controla bufferul inelului nucleului în Linux și în alte sisteme de operare similare Unix. Este util pentru examinarea mesajelor de pornire a kernel-ului și depanare a problemelor legate de hardware.

În acest tutorial, vom acoperi elementele de bază ale dmesg .

Folosind comanda dmesg

Sintaxa pentru comanda dmesg este următoarea:

dmesg

Când este invocat fără nicio opțiune, dmesg scrie toate mesajele din bufferul de apel al kernelului la ieșirea standard:

dmesg

În mod implicit, toți utilizatorii pot rula comanda dmesg . Cu toate acestea, pe unele sisteme, accesul la dmesg poate fi restricționat pentru utilizatorii non-root. În această situație, atunci când invocați dmesg veți primi un mesaj de eroare ca mai jos:

dmesg: read kernel buffer failed: Operation not permitted

Parametrul kernel kernel.dmesg_restrict specifică dacă utilizatorii neprivilegiați pot utiliza dmesg pentru a vizualiza mesaje din bufferul de jurnal al kernel-ului. Pentru a elimina restricțiile, setați-o la zero:

sudo sysctl -w kernel.dmesg_restrict=0

De obicei, ieșirea conține o mulțime de linii de informații, astfel încât numai ultima parte a ieșirii este vizualizabilă. Pentru a vedea o pagină simultan, conectați ieșirea la un utilitar pager, cum ar fi less sau more :

dmesg --color=always | less

--color=always este folosit pentru a păstra rezultatul colorat.

dmesg | grep -i usb

dmesg citește mesajele generate de kernel din /proc/kmsg virtual /proc/kmsg . Acest fișier oferă o interfață cu tamponul de inel al nucleului și poate fi deschis doar de un singur proces. Dacă procesul syslog se execută pe sistemul dvs. și încercați să citiți fișierul cu cat , sau less , comanda va atârna.

Daemon syslog aruncă mesajele kernel-ului la /var/log/dmesg , astfel încât să puteți utiliza și acel fișier jurnal:

cat /var/log/dmesg

Formarea ieșirii dmesg

Comanda dmesg oferă o serie de opțiuni care vă ajută să formatați și să filtrați ieșirea.

Una dintre cele mai utilizate opțiuni ale dmesg este -H ( --human uman), care permite ieșirea care poate fi citită de om. Această opțiune conectează ieșirea comenzii într-un pager:

dmesg -H

Pentru a imprima timestamp-urile care pot fi citite de om, utilizați opțiunea -T ( --ctime ):

dmesg -T

IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

Formatul timestamps poate fi, de asemenea, setat folosind --time-format opțiune, care poate fi ctime, reltime, delta, notime sau ISO. De exemplu, pentru a utiliza formatul delta, ați introduce:

dmesg --time-format=delta

De asemenea, puteți combina două sau mai multe opțiuni:

dmesg -H -T

Pentru a urmări ieșirea dmesg în timp real, utilizați opțiunea -w ( --follow ):

dmesg --follow

Filtrare ieșire dmesg

Puteți restricționa ieșirea dmesg la facilitățile și nivelurile date.

Facilitatea reprezintă procesul care a creat mesajul. dmesg acceptă următoarele facilități de jurnal:

  • kern - kernel mesaje user - mesaje la nivel de utilizator mail - mail sistem daemon - sistem daemons auth - mesaje de securitate / autorizare syslog - intern syslogd messages lpr - linie subsistem imprimantă news - subsistem de news rețea

-f ( --facility ) opțiunea vă permite să limitați producția la anumite facilități. Opțiunea acceptă una sau mai multe facilități separate prin virgulă.

De exemplu, pentru a afișa doar mesajele de demoni de kernel și sistem pe care le-ați folosi:

dmesg -f kern, daemon

Fiecare mesaj de jurnal este asociat cu un nivel de jurnal care arată importanța mesajului. dmesg acceptă următoarele niveluri de jurnal:

  • emerg - sistemul este alert inutilizabil - acțiunile trebuie luate imediat crit - condițiile critice err - condițiile de eroare warn - avertizarea condițiilor de avertizare - informații info condiții normale, dar semnificative - debug informațională - mesaje la nivel de depanare

-l ( -l --level ) opțiunea restricționează ieșirea la niveluri definite. Opțiunea acceptă unul sau mai multe niveluri separate prin virgulă.

Următoarea comandă afișează numai mesajele de eroare și critice:

dmesg -l err, crit

Ștergerea tamponului de inel

Opțiunea -C ( --clear ) vă permite să ștergeți bufferul de apel:

sudo dmesg -C

Doar root sau utilizatorii cu privilegii sudo pot șterge bufferul.

Pentru a imprima conținutul bufferului înainte de ștergere, utilizați opțiunea -c ( --read-clear ):

sudo dmesg -c

dmesg > dmesg_messages

Concluzie

Comanda dmesg vă permite să vizualizați și să controlați tamponul de inel al nucleului. Poate fi foarte util atunci când depanați nucleul sau problemele hardware.

Introduceți man dmesg în terminalul dvs. pentru informații despre toate opțiunile dmesg disponibile.

terminalul de kernel dmesg