Slik bruker du dmesg-kommandoen på Linux
Fatmawati Achmad Zaenuri/Shutterstock
Den |_+_| kommando lar deg kikke inn i den skjulte verdenen til Linux-oppstartsprosessene. Se gjennom og overvåk meldinger om maskinvareenhet og drivere fra kjernens egen ringbuffer med feilsøkerens venn.
Hvordan Linuxs ringbuffer fungerer
I Linux- og Unix-lignende datamaskiner er oppstart og oppstart to forskjellige faser av hendelsesforløpet som finner sted når datamaskinen slås på.
De oppstartsprosesser ( BIOS eller UEFA , MBR , og GRUB ) ta initialiseringen av systemet til det punktet hvor kjernen er lastet inn i minnet og koblet til den opprinnelige ramdisken ( initrd eller initramfs ), og system er startet.
De oppstartsprosesser ta deretter opp stafettpinnen og fullfør initialiseringen av operativsystemet. I de aller tidligste stadiene av initialisering, loggedemoner som f.eks syslogd eller rsyslogd er ennå ikke oppe og går. For å unngå å miste bemerkelsesverdige feilmeldinger og advarsler fra denne fasen av initialiseringen, inneholder kjernen en ringbuffer som den bruker som meldingslager.
En ringebuffer er et minne som er reservert for meldinger. Den er enkel i design, og av fast størrelse. Når den er full, overskriver nyere meldinger de eldste meldingene. Konseptuelt kan det betraktes som en sirkulær buffer .
AnnonseKjerneringbufferen lagrer informasjon som initialiseringsmeldinger til enhetsdrivere, meldinger fra maskinvare og meldinger fra kjernemoduler. Fordi den inneholder disse oppstartsmeldingene på lavt nivå, er ringebufferen et godt sted å starte en undersøkelse av maskinvarefeil eller andre oppstartsproblemer.
Men ikke gå tomhendt. Ta |_+_| med deg.
dmesg-kommandoen
Den |_+_| kommandoen lar deg for å se på meldingene som er lagret i ringebufferen . Som standard må du bruke |_+_| å bruke |_+_|.
dmesg
Alle meldingene i ringebufferen vises i terminalvinduet.
Det var en syndflod. Det er klart vi må gjøre rør det gjennom |_+_|:
dmesg
Nå kan vi bla gjennom meldingene på jakt etter gjenstander av interesse.
Du kan bruke søkefunksjonen i |_+_| for å finne og markere elementer og termer du er interessert i. Start søkefunksjonen ved å trykke skråstrektasten / i |_+_|.
I SLEKT: Hvordan bruke den mindre kommandoen på Linux
Fjerner behovet for sudo
Hvis du vil unngå å måtte bruke |_+_| hver gang du bruker |_+_|, kan du bruke denne kommandoen. Men vær oppmerksom på: den lar alle med en brukerkonto datamaskinen din bruke |_+_| uten å måtte bruke |_+_|.
dmesg
Forsering av fargeutgang
Som standard er |_+_| vil sannsynligvis bli konfigurert til å produsere farget utdata. Hvis det ikke er det, kan du fortelle |_+_| for å fargelegge utdataene ved å bruke |_+_| (farge) alternativ.
sudo
For å tvinge |_+_| for alltid å bruke en farget skjerm som standard, bruk denne kommandoen:
dmesg
Menneskelige tidsstempler
Som standard er |_+_| bruk en tidsstempelnotasjon på sekunder og nanosekunder siden kjernen startet. For å få dette gjengitt i et mer menneskevennlig format, bruk |_+_| (menneskelig) alternativ.
less
Dette fører til at to ting skjer.
- Utgangen vises automatisk i |_+_|.
- Tidsstemplene viser et tidsstempel med dato og klokkeslett, med minuttoppløsning. Meldingene som oppsto i hvert minutt er merket med sekunder og nanosekunder fra begynnelsen av det minuttet.
Lesbare tidsstempler for mennesker
Hvis du ikke krever nanosekunders nøyaktighet, men du vil ha tidsstempler som er lettere å lese enn standardinnstillingene, bruk |_+_| (lesbare mennesker) alternativ. (Det er litt forvirrende. |_+_| er det menneskelige alternativet, |_+_| er det lesbare alternativet for mennesker.)
less
Tidsstemplene er gjengitt som standard datoer og klokkeslett, men oppløsningen senkes til ett minutt.
Annonse
Alt som skjedde i løpet av et enkelt minutt har samme tidsstempel. Hvis alt du bryr deg om er hendelsesforløpet, er dette bra nok. Vær også oppmerksom på at du blir dumpet tilbake ved ledeteksten. Dette alternativet påkaller ikke automatisk |_+_|.
Ser på livebegivenheter
For å se meldinger når de kommer inn i kjerneringbufferen, bruk |_+_| (vent på meldinger) alternativ. Den setningen kan virke litt merkelig. Hvis ringebufferen brukes til å lagre meldinger fra hendelser som finner sted under oppstartssekvensen, hvordan kan direktemeldinger ankomme i ringebufferen når datamaskinen er oppe og går?
Alt som forårsaker en endring i maskinvaren koblet til datamaskinen din, vil føre til at meldinger sendes til kjerneringbufferen. Oppdater eller legg til en kjernemodul, og du vil se ringebuffermeldinger om disse endringene. Hvis du kobler til en USB-stasjon eller kobler til eller fra en Bluetooth-enhet, vil du se meldinger i |_+_| produksjon. Selv virtuell maskinvare vil føre til at nye meldinger vises i ringebufferen. Start en virtuell maskin, og du vil se ny informasjon som kommer inn i ringbufferen.
less
Merk at du ikke kommer tilbake til ledeteksten. Når nye meldinger vises, vises de med |_+_| nederst i terminalvinduet.
Selv montering av en CD-ROM-disk blir sett på som en endring, fordi du har podet innholdet på CD-ROM-disken inn i katalogtreet.
For å gå ut av sanntidsfeeden, trykk |_+_|.
Hent de ti siste meldingene
Bruk halekommandoen for å hente de ti siste kjerneringbuffermeldinger. Selvfølgelig kan du hente et hvilket som helst antall meldinger. Ti er bare vårt eksempel.
sudo
Annonse
De siste ti meldingene hentes og listes opp i terminalvinduet.
Søker etter spesifikke vilkår
Pipe utgangen fra |_+_| gjennom |_+_| for å søke etter bestemte strenger eller mønstre . Her bruker vi |_+_| (ignorer store og små bokstaver), slik at tilfellet med samsvarende strenger ses bort fra. resultatene våre vil inkludere usb og USB og enhver annen kombinasjon av små og store bokstaver.
dmesg
De uthevede søkeresultatene er med store og små bokstaver.
Vi kan isolere meldingene som inneholder referanser til den første SCSI harddisk på systemet |_+_|. (Faktisk brukes |_+_| også i dag for den første SATA-harddisken , og for USB-stasjoner.)
dmesg
Alle meldingene som nevner |_+_| hentes og vises i terminalvinduet.
For å lage |_+_| søk etter flere termer samtidig, bruk |_+_| (utvid regulært uttrykk) alternativ. Du må oppgi søkeordene i en sitert streng med pipe | skilletegn mellom søkeordene:
sudo
Enhver melding som nevner noen av søkeordene er oppført i terminalvinduet.
Bruke loggnivåer
Hver melding som er logget til kjerneringbufferen har et nivå knyttet til seg. Nivået representerer viktigheten av informasjonen i meldingen. Nivåene er:
- Bruk |_+_| å gjennomgå meldinger fra de høyeste nivå ned gjennom hvert lavere nivå, på jakt etter eventuelle feil eller advarsler som nevner maskinvareelementet, eller som kan ha betydning for problemet.
- Bruk |_+_| for å søke etter omtale av passende anlegget for å se om de inneholder nyttig informasjon.
- Rør |_+_| gjennom |_+_| og se etter relaterte strenger eller identifikatorer som produktprodusent eller modellnummer.
- Rør |_+_| gjennom |_+_| og se etter generiske termer som gpu eller lagring, eller termer som feil, mislyktes eller ikke kan.
- Bruk |_+_| alternativ og se |_+_| meldinger i sanntid.
- & rsaquo; Hvordan sjekke Linux-kjernen og operativsystemversjonen
- & rsaquo; Slik bruker du Linuxs skjermkommando
- › 5 nettsteder hver Linux-bruker bør bokmerke
- & rsaquo; Cyber Monday 2021: Beste tekniske tilbud
- › Funksjoner vs. formler i Microsoft Excel: Hva er forskjellen?
- & rsaquo; Cyber Monday 2021: Beste Apple-tilbud
- › Slik finner du Spotify Wrapped 2021
- › Datamaskinmappen er 40: Hvordan Xerox Star skapte skrivebordet
Vi kan lage |_+_| trekke ut meldinger som samsvarer med et bestemt nivå ved å bruke |_+_| (nivå) og sende navnet på nivået som en kommandolinjeparameter. For å kun se meldinger på informasjonsnivå, bruk denne kommandoen:
dmesg
Alle meldingene som er oppført er informasjonsmeldinger. De inneholder ikke feil eller advarsler, bare nyttige varsler.
Kombiner to eller flere loggnivåer i én kommando for å hente meldinger med flere loggnivåer:
dmesg
Utgangen fra |_+_| er en blanding av meldinger for hvert loggnivå:
Fasilitetskategoriene
Den |_+_| meldinger er gruppert i kategorier kalt fasiliteter. Listen over fasiliteter er:
Vi kan spørre |_+_| for å filtrere utdataene slik at de bare viser meldinger i et bestemt anlegg. For å gjøre det må vi bruke |_+_| (anlegg) alternativ:
-L
|_+_| viser alle meldingene relatert til demoner i terminalvinduet.
Som vi gjorde med nivåene, kan vi spørre |_+_| for å liste meldinger fra mer enn ett anlegg samtidig:
dmesg
Utdataene er en blanding av syslog- og daemon-loggmeldinger.
Kombinerer anlegg og nivå
Den |_+_| (dekode) alternativet gjør |_+_| vis anlegget og nivået som menneskelesbare prefikser til hver linje.
dmesg
Anlegget og nivået kan sees i starten av hver linje:
Annonse
Den første uthevede delen er en melding fra kjerneanlegget med et varselnivå. Den andre uthevede delen er en melding fra kjerneanlegget med informasjonsnivå.
Det er flott, men hvorfor?
I et nøtteskall, feilsøking.
Hvis du har problemer med at en maskinvare ikke gjenkjennes eller ikke oppfører seg riktig, |_+_| kan kaste lys over problemet.
God jakt.
I SLEKT: Beste Linux bærbare datamaskiner for utviklere og entusiaster
LES NESTEDave McKay brukte først datamaskiner da stanset papirtape var på moten, og han har programmert siden. Etter over 30 år i IT-bransjen er han nå teknologijournalist på heltid. I løpet av sin karriere har han jobbet som frilansprogrammerer, leder for et internasjonalt programvareutviklingsteam, prosjektleder for IT-tjenester og sist som databeskyttelsesansvarlig. Hans forfatterskap har blitt publisert av howtogeek.com, cloudsavvyit.com, itenterpriser.com og opensource.com. Dave er en Linux-evangelist og forkjemper for åpen kildekode.
Les hele bio