A dmesg parancs használata Linuxon

A dmesg parancs segítségével betekinthet a Linux indítási folyamatainak rejtett világába. Tekintse át és figyelje a hardvereszköz- és illesztőprogram-üzeneteket a kernel saját csengőpufferéből a „hibakereső barátjával”.

Hogyan működik a Linux Ring Buffere

Linux- és Unix-szerű számítógépeken a rendszerindítás és az indítás a számítógép bekapcsolásakor végbemenő eseménysorozat két különálló fázisa.

A rendszerindítási folyamatok (BIOS vagy UEFI, MBR, és GRUB) vigye a rendszer inicializálását addig a pontig, ahol a rendszermag betöltődik a memóriába és csatlakozik a kezdeti ramdiskhez (initrd vagy initramfs), és systemd elindul.

Az indítási folyamatok ezután felveszik a stafétabotot, és befejezik az operációs rendszer inicializálását. Az inicializálás nagyon korai szakaszában a naplózó démonok, mint pl syslogd vagy rsyslogd még nem működnek. Az inicializálás ezen fázisából származó jelentős hibaüzenetek és figyelmeztetések elvesztésének elkerülése érdekében a kernel tartalmazza a gyűrű puffer amit üzenettárként használ.

A csengetési puffer az üzenetek számára fenntartott memóriaterület. Egyszerű kialakítású, fix méretű. Ha megtelik, az újabb üzenetek felülírják a legrégebbi üzeneteket. Elvileg úgy fogható fel, mint „kör alakú puffer.”

A kernelgyűrű puffer olyan információkat tárol, mint az eszközillesztők inicializálási üzenetei, a hardver üzenetei és a kernelmodulok üzenetei. Mivel ezeket az alacsony szintű indítási üzeneteket tartalmazza, a csengetési puffer jó hely a hardverhibák vagy más indítási problémák kivizsgálásához.

De ne menj üres kézzel. Vidd magaddal a dmesg-t.

A dmesg parancs

A dmesg parancs lehetővé teszi a csengetési pufferben tárolt üzenetek megtekintéséhez. Alapértelmezés szerint a sudo-t kell használnia a dmesg használatához.

sudo dmesg

A csengetési pufferben lévő összes üzenet megjelenik a terminál ablakában.

Ez vízözön volt. Nyilvánvaló, hogy kevesebbet kell tennünk:

sudo dmesg | less

Most már lapozgathatunk az üzenetek között, keresve az érdekes elemeket.

Használhatja a kereső funkciót a kevesebben belül az Önt érdeklő elemek és kifejezések megkeresésére és kiemelésére. Indítsa el a keresést a perjel gomb „/” rövidebb megnyomásával.

  Hogyan lehet letiltani az UFW tűzfalat Linuxon

A sudo szükségességének eltávolítása

Ha el szeretné kerülni, hogy a dmesg minden egyes használatakor a sudo-t kelljen használnia, használhatja ezt a parancsot. De ügyeljen arra, hogy bárki, akinek felhasználói fiókja van a számítógépén, használhatja a dmesg-t anélkül, hogy sudo-t kellene használnia.

sudo sysctl -w kernel.dmesg_restrict=0

Színkimenet kényszerítése

Alapértelmezés szerint a dmesg valószínűleg színes kimenet létrehozására lesz beállítva. Ha nem, akkor a -L (szín) kapcsolóval megadhatja a dmesg-nek, hogy színezze ki a kimenetét.

sudo dmesg -L

Ha a dmesg-t mindig színes megjelenítésre szeretné kényszeríteni, használja ezt a parancsot:

sudo dmesg --color=always

Emberi időbélyegek

Alapértelmezés szerint a dmesg a másodperc és az időbélyegző jelölését használja nanoszekundum amióta a kernel elindult. Ha ezt emberbarátabb formátumban szeretné megjeleníteni, használja a -H (human) kapcsolót.

sudo dmesg -H

Ez két dologhoz vezet.

A kimenet automatikusan kevesebbben jelenik meg.
Az időbélyegek egy időbélyeget mutatnak dátummal és időponttal, perc felbontással. Az egyes percekben előforduló üzenetek az adott perc kezdetétől számított másodpercekkel és nanoszekundumokkal vannak megjelölve.

Ember által olvasható időbélyegek

Ha nem igényel nanomásodperces pontosságot, de az alapértelmezettnél könnyebben olvasható időbélyegeket szeretne, használja a -T (ember által olvasható) opciót. (Kicsit zavaró. -H az „emberi” opció, a -T az „ember által olvasható” opció.)

sudo dmesg -T

Az időbélyegek szabványos dátumként és időpontként jelennek meg, de a felbontás egy percre csökken.

Minden, ami egy percen belül történt, ugyanazt az időbélyeget viseli. Ha csak az események sorrendje zavar, ez elég jó. Azt is vegye figyelembe, hogy a rendszer visszakerül a parancssorba. Ez az opció nem hív automatikusan kevesebbet.

Élő események megtekintése

Ha látni szeretné az üzeneteket, amint megérkeznek a kernel gyűrűpufferébe, használja a –follow (üzenetekre vár) opciót. Ez a mondat kissé furcsának tűnhet. Ha a csengetési puffert az indítási szekvencia során lezajló események üzeneteinek tárolására használják, hogyan érkezhetnek élő üzenetek a csengetési pufferbe, miután a számítógép üzembe helyezte és fut?

Bármi, ami változást okoz a számítógéphez csatlakoztatott hardverben, üzeneteket küld a kernelgyűrű pufferébe. Frissítsen vagy adjon hozzá egy kernelmodult, és csengetési pufferüzeneteket fog látni a változtatásokról. Ha csatlakoztat egy USB-meghajtót vagy csatlakoztat vagy leválaszt egy Bluetooth-eszközt, üzenetek jelennek meg a dmesg kimeneten. Még a virtuális hardver is okozhat új üzeneteket a csengetési pufferben. Indítson el egy virtuális gépet, és új információk érkeznek a csengetési pufferbe.

sudo dmesg --follow

Vegye figyelembe, hogy nem tér vissza a parancssorba. Amikor új üzenetek jelennek meg, azokat a dmesg megjeleníti a terminálablak alján.

  Az elfelejtett Apple Notes-jelszó visszaállítása iPhone, iPad és Mac rendszeren

Még a CD-ROM lemez csatlakoztatása is változásnak számít, mivel a CD-ROM lemez tartalmát beoltottad a könyvtárfába.

A valós idejű hírfolyamból való kilépéshez nyomja le a Ctrl+C billentyűkombinációt.

Az utolsó tíz üzenet lekérése

Használja a tail parancsot hogy visszaszerezze az utolsó tízet kernel ring puffer üzenetek. Természetesen tetszőleges számú üzenetet lekérhet. A tíz csak a mi példánk.

sudo dmesg | last -10

Az utolsó tíz üzenetet a rendszer lekéri és felsorolja a terminál ablakában.

Konkrét kifejezések keresése

A dmesg kimenetét vezesse át a grep-en keresztül adott karakterláncok vagy minták kereséséhez. Itt a -i (kis- és nagybetűk figyelmen kívül hagyása) opciót használjuk, így a megfelelő karakterláncok kis- és nagybetűjét figyelmen kívül hagyjuk. eredményeink között szerepel az „usb” és az „USB”, valamint a kis- és nagybetűk bármilyen más kombinációja.

sudo dmesg | grep -i usb

A kiemelt keresési eredmények kis- és nagybetűsek.

Elkülöníthetjük azokat az üzeneteket, amelyek az elsőre utalnak SCSI merevlemez a rendszer sda-n. (Valójában az sda-t manapság arra is használják az első SATA merevlemezés USB-meghajtókhoz.)

sudo dmesg | grep -i sda

Az összes sda-t megemlítő üzenet lekérésre kerül, és megjelenik a terminál ablakában.

Ha egyszerre több kifejezésre szeretne grep-et keresni, használja az -E (reguláris kifejezés kiterjesztése) opciót. A keresett kifejezéseket egy „|” jelű, idézőjeles karakterláncban kell megadnia. határolók a keresési kifejezések között:

sudo dmesg | grep -E "memory|tty|dma"

sudo dmesg |  grep -E

Minden olyan üzenet, amely megemlíti a keresési kifejezéseket, megjelenik a terminál ablakában.

kimenet a sudo dmesg-ből |  grep -E

Naplószintek használata

Minden, a kernelgyűrű pufferébe naplózott üzenethez tartozik egy szint. A szint az üzenetben lévő információ fontosságát jelzi. A szintek a következők:

emerg: A rendszer használhatatlan.
figyelmeztetés: Azonnal intézkedni kell.
kritika: Kritikus feltételek.
Err: Hibafeltételek.
Figyelmeztetés: Figyelmeztetési feltételek.
megjegyzés: Normál, de jelentős állapot.
info: Tájékoztató.
debug: Hibakeresési szintű üzenetek.

  Az elmosódás effektus fókuszának és intenzitásának szerkesztése a Google Kamera alkalmazásban

Az adott szintnek megfelelő dmesg-üzeneteket a -l (level) kapcsoló használatával és a szint nevének parancssori paraméterként történő átadásával készíthetünk. Ha csak „információs” szintű üzeneteket szeretne látni, használja ezt a parancsot:

sudo dmesg -l info

A felsorolt ​​üzenetek mindegyike tájékoztató jellegű. Nem tartalmaznak hibákat vagy figyelmeztetéseket, csak hasznos értesítéseket.

Kombináljon két vagy több naplózási szintet egy parancsban több naplószintű üzenetek lekéréséhez:

sudo dmesg -l debug,notice

A dmesg kimenete az egyes naplózási szintek üzeneteinek keveréke:

A létesítmény kategóriái

A dmesg üzenetek „létesítményeknek” nevezett kategóriákba vannak csoportosítva. A létesítmények listája a következő:

kern: Kernel üzenetek.
user: Felhasználói szintű üzenetek.
mail: Levelezési rendszer.
démon: Rendszerdémonok.
auth: Biztonsági/engedélyezési üzenetek.
syslog: belső syslogd üzenetek.
lpr: Vonalnyomtató alrendszer.
hírek: Hálózati hírek alrendszer.

Megkérhetjük a dmesg-t, hogy szűrje a kimenetét, hogy csak egy adott létesítményben jelenítse meg az üzeneteket. Ehhez a -f (facility) kapcsolót kell használnunk:

sudo dmesg -f daemon

A dmesg felsorolja az összes démonokkal kapcsolatos üzenetet a terminálablakban.

Ahogy a szinteknél is tettük, megkérhetjük a dmesg-t, hogy egyszerre több létesítményből is listázza ki az üzeneteket:

sudo dmesg -f syslog, daemon

A kimenet syslog és démon naplóüzenetek keveréke.

A létesítmény és a szint kombinálása

Az -x (dekódolás) opció arra készteti a dmesg-t, hogy minden sor ember által olvasható előtagjaként jelenítse meg a létesítményt és a szintet.

sudo dmesg -x

A létesítmény és a szint az egyes sorok elején látható:

Az első kiemelt rész a „kernel” létesítmény üzenete „figyelmeztetés” szinttel. A második kiemelt rész a „kernel” szolgáltatás üzenete „információ” szinttel.

Ez nagyszerű, de miért?

Dióhéjban, hibamegállapítás.

Ha problémái vannak azzal, hogy egy hardvert nem ismer fel, vagy nem működik megfelelően, a dmesg rávilágíthat a problémára.

A dmesg segítségével tekintse át az üzeneteket a legmagasabb szinttől az alsó szintig, és keressen minden olyan hibát vagy figyelmeztetést, amely megemlíti a hardverelemet, vagy hatással lehet a problémára.
Használja a dmesg-t a megfelelő létesítmény bármely említésének megkeresésére, hogy megnézze, tartalmaz-e hasznos információt.
Vezesse át a dmesg-t a grep-en keresztül, és keresse a kapcsolódó karakterláncokat vagy azonosítókat, például a termék gyártóját vagy a modellszámokat.
Vezesse át a dmesg-t a grep-en keresztül, és keressen általános kifejezéseket, például „gpu” vagy „tárhely”, vagy olyan kifejezéseket, mint „hiba”, „sikertelen” vagy „nem lehetséges”.
Használja a –follow opciót, és nézze meg a dmesg üzeneteket valós időben.

Boldog vadászatot.