Android

Dmesg commando in linux

7 Using dmesg to read the kernel ring buffer

7 Using dmesg to read the kernel ring buffer

Inhoudsopgave:

Anonim

De Linux-kernel is de kern van het besturingssysteem dat de toegang tot de systeembronnen beheert, zoals CPU, I / O-apparaten, fysiek geheugen en bestandssystemen. De kernel schrijft verschillende berichten naar de kernelringbuffer tijdens het opstartproces en wanneer het systeem actief is. Deze berichten bevatten verschillende informatie over de werking van het systeem.

De kernelringbuffer is een deel van het fysieke geheugen dat de logboekberichten van de kernel bevat. Het heeft een vaste grootte, wat betekent dat zodra de buffer vol is, de oudere logboekrecords worden overschreven.

Het opdrachtregelprogramma dmesg wordt gebruikt om de kernelringbuffer in Linux en andere Unix-achtige besturingssystemen af ​​te drukken en te besturen. Het is handig voor het onderzoeken van kernel boot berichten en het debuggen van hardware gerelateerde problemen.

In deze tutorial behandelen we de basisprincipes van de opdracht dmesg .

Het dmesg commando gebruiken

De syntaxis voor de opdracht dmesg is als volgt:

dmesg

Wanneer opgeroepen zonder opties, schrijft dmesg alle berichten van de kernelringbuffer naar de standaarduitvoer:

dmesg

Standaard kunnen alle gebruikers de opdracht dmesg uitvoeren. Op sommige systemen kan de toegang tot dmesg echter worden beperkt voor niet-rootgebruikers. In deze situatie krijgt u bij het inschakelen van dmesg een foutmelding zoals hieronder:

dmesg: read kernel buffer failed: Operation not permitted

De kernelparameter kernel.dmesg_restrict geeft aan of kernel.dmesg_restrict gebruikers dmesg kunnen gebruiken om berichten uit de kernel.dmesg_restrict van de kernel te bekijken. Om de beperkingen te verwijderen, stelt u deze in op nul:

sudo sysctl -w kernel.dmesg_restrict=0

Gewoonlijk bevat de uitvoer veel regels met informatie, zodat alleen het laatste deel van de uitvoer zichtbaar is. Als u één pagina per keer wilt bekijken, stuurt u de uitvoer naar een pager-hulpprogramma zoals less of more :

dmesg --color=always | less

De --color=always gebruikt om de gekleurde uitvoer te behouden.

dmesg | grep -i usb

dmesg leest de berichten gegenereerd door de kernel uit het virtuele /proc/kmsg bestand. Dit bestand biedt een interface voor de kernelringbuffer en kan slechts met één proces worden geopend. Als het syslog proces op uw systeem wordt uitgevoerd en u probeert het bestand met cat of less , blijft de opdracht hangen.

De syslog daemon dumpt kernelberichten naar /var/log/dmesg , dus je kunt dat logbestand ook gebruiken:

cat /var/log/dmesg

Formaatuitgang dmesg

De opdracht dmesg biedt een aantal opties waarmee u de uitvoer kunt formatteren en filteren.

Een van de meest gebruikte opties van dmesg is -H ( --human ), die de voor mensen leesbare uitvoer mogelijk maakt. Met deze optie wordt de opdrachtuitvoer naar een pager geleid:

dmesg -H

Gebruik de optie -T ( --ctime ) om voor mensen leesbare tijdstempels af te drukken:

dmesg -T

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

Het tijdstempelformaat kan ook worden ingesteld met behulp van het --time-format optie, die ctime, reltime, delta, notime of iso kan zijn. Als u bijvoorbeeld het delta-formaat wilt gebruiken, typt u:

dmesg --time-format=delta

U kunt ook twee of meer opties combineren:

dmesg -H -T

Om de uitvoer van de opdracht dmesg in realtime te bekijken, gebruikt u de optie -w ( --follow ):

dmesg --follow

dmesg uitvoer filteren

U kunt de dmesg uitvoer beperken tot bepaalde voorzieningen en niveaus.

De faciliteit vertegenwoordigt het proces dat het bericht heeft gemaakt. dmesg ondersteunt de volgende logfaciliteiten:

  • kern - kernel berichten user - gebruikersniveau berichten mail - mailsysteem daemon - systeem daemons auth - beveiligings- / autorisatieberichten syslog - interne syslogd berichten lpr - line printer subsysteem news - netwerk nieuws subsysteem

De -f ( --facility ) optie kunt u de uitvoer beperken tot specifieke voorzieningen. De optie accepteert een of meer door komma's gescheiden voorzieningen.

Als u bijvoorbeeld alleen de kernel- en systeemdaemons-berichten wilt weergeven die u zou gebruiken:

dmesg -f kern, daemon

Elk logboekbericht is gekoppeld aan een logboekniveau dat het belang van het bericht aangeeft. dmesg ondersteunt de volgende logniveaus:

  • emerg - systeem is onbruikbaar alert - actie moet onmiddellijk worden ondernomen crit - kritieke condities fout - waarschuw condities - waarschuw condities notice - normale maar belangrijke conditie info - informatieve debug - debug-level berichten

De -l ( --level ) optie beperkt de uitvoer tot gedefinieerde niveaus. De optie accepteert een of meer door komma's gescheiden niveaus.

De volgende opdracht geeft alleen de fout- en kritieke berichten weer:

dmesg -l err, crit

De ringbuffer wissen

Met de optie -C ( --clear ) kunt u de ringbuffer wissen:

sudo dmesg -C

Alleen root of gebruikers met sudo-rechten kunnen de buffer wissen.

Om de bufferinhoud af te drukken voordat u deze wist, gebruikt u de optie -c ( --read-clear ):

sudo dmesg -c

dmesg > dmesg_messages

Conclusie

Met de opdracht dmesg kunt u de dmesg bekijken en beheren. Het kan erg handig zijn bij het oplossen van kernel- of hardwareproblemen.

Typ man dmesg in uw terminal voor informatie over alle beschikbare dmesg opties.

dmesg kernel terminal