Ako používať journalctl na čítanie systémových denníkov Linuxu


Systémové protokolovanie Linuxu sa zmenilo zavedením systemd. Zistite, ako používať príkaz journalctl na čítanie a filtrovanie správ systémového denníka.

Centralizované protokolovanie

Správca systému a služieb systemd zaviedol významnú zmenu v spôsobe zhromažďovania systémových denníkov. Protokoly bývali umiestnené na rôznych miestach v súborovom systéme podľa služby alebo démona, ktorý ich vytváral. Všetky však mali jedno spoločné. Boli to obyčajné textové súbory.

Pomocou systemd sú všetky protokolové súbory systému, zavádzania a jadra zhromažďované a spravované centrálnym, špecializovaným riešením protokolovania. Formát, v ktorom sú uložené, je binárny. Jedna vec, ktorú to uľahčuje, je schopnosť extrahovať údaje v rôznych formátoch, ako je napríklad JSON, ako uvidíme.

môže tiež uľahčiť krížové odkazovanie na súvisiace informácie, ktoré by boli predtým zaznamenané v samostatných protokolových súboroch. Pretože sa údaje teraz uchovávajú v jedinom časopise, údaje z niekoľkých zdrojov, ktoré vás zaujímajú, možno vybrať a zobraziť v jedinom prepletenom zozname záznamov.

journalctl je nástroj používaný na prácu s časopisom.

journalctl bez ozdôb

journalctl môžete vyvolať bez parametrov príkazového riadka:

journalctl

journalctl zobrazuje celý žurnál s najstaršími záznamami na začiatku zoznamu. Zoznam sa zobrazuje v menej, čo vám umožňuje prechádzať stránkami a vyhľadávať pomocou bežných navigačných funkcií menej. Môžete tiež použiť klávesy Šípka doľava a Šípka doprava na posúvanie sa do strán a čítanie širokých záznamov denníka.

Stlačením klávesu End preskočíte priamo na koniec zoznamu a na najnovšie záznamy denníka.

Ukončite stlačením Ctrl+C.

Hoci journalctl je možné volať bez použitia sudo, ak použijete sudo, v protokole uvidíte všetky podrobnosti.

sudo journalctl

Ak to potrebujete, môžete pomocou --no-pager nastaviť, aby journalctl odosielal svoj výstup do okna terminálu namiesto na menej možnosť.

sudo journalctl --no-pager

Výstup sa rýchlo posúva cez okno terminálu a vrátite sa do príkazového riadka.

Ak chcete obmedziť počet riadkov, ktoré vráti journalctl, použite možnosť -n (riadky). Požiadajme o desať riadkov výstupu:

sudo journalctl -n 10

Nasledujúce aktualizácie denníka

Ak chcete, aby journalctl zobrazoval najnovšie záznamy, keď prichádzajú do denníka, použite možnosť -f (nasledovať).

sudo journalctl -f

Najnovší záznam má časovú pečiatku 07:09:07. Keď sa uskutoční nová aktivita, nové položky sa pridajú do spodnej časti displeja. Aktualizácie takmer v reálnom čase – skvelé!

O 07:09:59 aplikácia s názvom geek-app vložila do denníka záznam s nápisom „Nová správa od HTG“.

Zmena formátu zobrazenia

Keďže žurnál je binárny súbor, údaje v ňom je potrebné preložiť alebo analyzovať na text, aby sa vám mohol zobraziť. Pomocou rôznych syntaktických analyzátorov možno z rovnakých binárnych zdrojových údajov vytvoriť rôzne výstupné formáty. Existuje niekoľko rôznych formátov, ktoré môže journalctl použiť.

Predvolený výstup je krátky formát, ktorý je veľmi podobný klasickému formátu systémového denníka. Ak chcete explicitne požiadať o krátky formát, použite možnosť -o (výstup) s modifikátorom short.

sudo journalctl -n 10 -o short-full

Zľava doprava sú polia:

  • Čas vytvorenia správy v miestnom čase.
  • Názov hostiteľa.
  • Názov procesu. Toto je proces, ktorý vygeneroval správu.
  • Správa denníka.

Ak chcete získať úplnú dátumovú a časovú pečiatku, použite modifikátor short-full:

sudo journalctl -n 10 -o short-full

Formáty dátumu a času v tomto výstupe sú formátom, v ktorom musíte zadať dátumy a časy, keď vyberáte správy denníka podľa obdobia, ako uvidíme čoskoro.

Ak chcete zobraziť všetky metadáta, ktoré sprevádzajú každú správu denníka, použite modifikátor verbose.

sudo journalctl -n 10 -o verbose

Existuje veľa možných polí, ale zriedkavo sa vyskytujú všetky polia v správe.

Jedno pole, ktoré stojí za to prediskutovať, je pole Priorita. V tomto príklade má hodnotu 6. Hodnota predstavuje dôležitosť správy:

  • 0: Núdzový stav. Systém je nepoužiteľný.
  • 1: Upozornenie. Bol označený stav, ktorý by sa mal okamžite opraviť.
  • 2: kritické. Týka sa to pádov, výpadkov jadra a významných porúch v primárnych aplikáciách.
  • 3: Chyba. Bola nahlásená chyba, ale nepovažuje sa za závažnú.
  • 4: Upozornenie. Upozorňuje na podmienku, ktorá sa môže stať chybou, ak ju ignorujete.
  • 5: Upozornenie. Používa sa na hlásenie udalostí, ktoré sú nezvyčajné, ale nie chyby.
  • 6: Informácie. Pravidelné prevádzkové správy. Tieto nevyžadujú akciu.
  • 7: Ladenie. Správy vložené do aplikácií, aby sa im uľahčilo ich ladenie.

Ak chcete, aby bol výstup prezentovaný ako správne vytvorené objekty JavaScript Object Notation (JSON), použite modifikátor json:

sudo journalctl -n 10 -o json

Každá správa je správne zabalená ako dobre vytvorený objekt JSON a zobrazuje sa jedna správa na riadok výstupu.

Ak chcete mať výstup JSON pekne vytlačený, použite modifikátor json-pretty.

sudo journalctl -n 10 -o json-pretty

Každý objekt JSON je rozdelený do viacerých riadkov, pričom každý pár názov-hodnota je na novom riadku.

Ak chcete zobraziť iba správy so záznamom denníka bez časových pečiatok alebo iných metadát, použite modifikátor cat:

sudo journalctl -n 10 -o cat

Tento formát zobrazenia môže sťažiť identifikáciu, ktorý proces vyvolal udalosť protokolu, hoci niektoré správy obsahujú vodítko.

Výber správ denníka podľa časového obdobia

Ak chcete obmedziť výstup z journalctl na časové obdobie, ktoré vás zaujíma, použite -S (od) a -U (do) možnosti.

Ak chcete zobraziť záznamy denníka od určitého času a dátumu, použite tento príkaz:

sudo journalctl -S "2020-91-12 07:00:00"

Displej obsahuje iba správy, ktoré prišli po dátume a čase v príkaze.

Ak chcete definovať časové obdobie, za ktoré chcete podávať správy, použite súčasne možnosti -S (od) a -U (do). Tento príkaz prezerá správy denníka z 15 minútového časového obdobia.:

sudo journalctl -S "2020-91-12 07:00:00" -U "2020-91-12 07:15:00"

Toto je skvelá kombinácia, ak viete, že sa vo vašom systéme stalo niečo zvláštne a približne kedy sa to stalo.

Použitie relatívnych časových období

Pri výbere časových období môžete použiť relatívne adresovanie. To znamená, že môžete povedať veci ako „ukáž mi všetky udalosti spred jedného dňa až doteraz“. To je presne to, čo tento príkaz znamená. „d“ znamená „deň“ a „-1“ znamená jeden deň v minulosti.

sudo journalctl -S -1d

Správy denníka sú uvedené od včerajšieho 00:00:00 až po „teraz“.

Ak chcete preskúmať niečo, čo sa stalo v nedávnej minulosti, môžete zadať relatívne časové obdobie merané v hodinách. Tu kontrolujeme správy denníka za poslednú hodinu:

sudo journalctl -S -1h

Zobrazia sa vám správy za poslednú hodinu. Môžete tiež použiť „m“ na nastavenie relatívnych časových úsekov meraných v minútach a „w“ na týždne.

journalctl rozumie dnes, včera a zajtra. Tieto modifikátory poskytujú praktický spôsob, ako určiť spoločné časové obdobia. Ak chcete zobraziť všetky udalosti, ktoré sa stali včera, použite tento príkaz:

sudo journalctl -S yesterday

Všetky udalosti denníka, ktoré sa udiali včera, do polnoci 00:00:00, sa načítajú a zobrazia vám.

Ak chcete zobraziť všetky doteraz prijaté správy denníka, použite tento príkaz:

sudo journalctl -S today

Zobrazí sa všetko od 00:00:00 až do vydania príkazu.

Môžete kombinovať rôzne modifikátory časového obdobia. Ak chcete vidieť všetko spred dvoch dní až do začiatku dnešného dňa, použite tento príkaz:

sudo journalctl -S -2d -U today

Vyhľadá a zobrazí sa všetko od predvčera až po dnešok.

Výber správ denníka podľa dátových polí

Môžete vyhľadávať správy denníka, ktoré zodpovedajú širokej škále polí denníka. Tieto vyhľadávania sa snažia nájsť zhody v metadátach pripojených ku každej správe. Odporúča sa pozrieť si zoznam polí a vybrať si tie, ktoré budú pre vás najužitočnejšie.

Majte na pamäti, či aplikácia vyplní každé pole alebo nie, je výlučne na autoroch aplikácie. Nemôžete zaručiť, že každé pole bude vyplnené.

Všetky modifikátory poľa žurnálu sa používajú rovnakým spôsobom. V nižšie uvedených príkladoch ich použijeme niekoľko. Ak chcete vyhľadať správy denníka z konkrétnej aplikácie, použite modifikátor _COMM (príkaz). Ak použijete aj možnosť -f (nasledovať), journalctl bude sledovať nové správy z tejto aplikácie, keď prídu.

sudo journalctl -f _COMM=geek-app

Záznamy denníka môžete vyhľadať pomocou ID procesu procesu, ktorý vygeneroval správu denníka. Pomocou príkazu ps nájdite ID procesu démona alebo aplikácie, ktorú chcete hľadať.

sudo journalctl _PID=751

Na počítači použitom na výskum tohto článku je démon SSH proces 751.

Môžete tiež vyhľadávať podľa ID používateľa. Toto je ID používateľa osoby, ktorá spustila aplikáciu alebo príkaz, alebo ktorá vlastní proces.

sudo journalctl _UID=1000

Všetky správy spojené s akýmkoľvek iným ID používateľa sa odfiltrujú. Zobrazujú sa iba správy súvisiace s používateľom 1000:

Ďalším spôsobom, ako vyhľadať správy protokolu súvisiace s konkrétnou aplikáciou, je poskytnúť cestu k spustiteľnému súboru.

sudo journalctl /usr/bin/anacron

Všetky správy denníka plánovača anacron sa načítajú a zobrazia.

Aby sme uľahčili vyhľadávanie, môžeme požiadať journalctl o uvedenie všetkých hodnôt, ktoré obsahuje, pre ktorékoľvek z polí denníka.

Ak chcete zobraziť ID používateľov, pre ktoré journalctl zaznamenal správy denníka, použite možnosť -F (polia) a zadajte identifikátor poľa _UID.

journalctl -F _UID

Urobme to znova a pozrime sa na ID skupiny (GID):

journalctl -F _GID

Môžete to urobiť s ktorýmkoľvek identifikátorom poľa žurnálu.

Výpis správ jadra

Existuje vstavaný spôsob, ako rýchlo izolovať správy jadra. Nemusíte ich sami hľadať a izolovať. Voľba -k (kernel) odstráni všetky ostatné správy a poskytne vám okamžitý pohľad na položky protokolu jadra.

sudo journalctl -k

Zvýraznenie odráža dôležitosť správy podľa hodnôt v poli Priorita.

Kontrola zavádzacích správ

Ak máte problém súvisiaci so zavádzaním, ktorý chcete preskúmať, journalctl vám to pomôže. Možno ste pridali nový hardvér a ten nereaguje, alebo predtým fungujúci hardvérový komponent už po poslednej aktualizácii systému nefunguje.

Ak chcete zobraziť položky denníka týkajúce sa vášho posledného spustenia, použite možnosť -b (zavedenie):

journalctl -b

Zobrazia sa vám záznamy denníka posledného spustenia.

Keď hovoríme „posledné spustenie“, máme na mysli proces spustenia, ktorý oživil váš počítač pre vašu aktuálnu reláciu prihlásenia. Ak chcete zobraziť predchádzajúce spustenia, pomocou čísla môžete journalctl povedať, o ktoré spustenie máte záujem. Ak chcete zobraziť tretie predchádzajúce spustenie, použite tento príkaz:

journalctl -b 3

Vo všeobecnosti, ak ste mali problém a museli ste reštartovať počítač, zaujíma vás predchádzajúca sekvencia zavádzania. Ide teda o bežný príkazový formulár.

Je ľahké zamiešať sa do poradia topánok. Aby sme vám pomohli, môžeme požiadať journalctl, aby uviedol zoznam topánok, ktoré zaznamenal vo svojom denníku, pomocou voľby --list-boots.

journalctl --list-boots

Môžete identifikovať zavádzanie, pre ktoré chcete vidieť správy, podľa dátumovej a časovej pečiatky a potom použiť číslo v ľavom stĺpci na získanie správ protokolu pre túto postupnosť zavádzania. Môžete tiež vybrať 32-bitový identifikátor zavádzania a odovzdať ho journalctl.

sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7

Načítajú sa a zobrazia sa správy denníka z nami požadovanej sekvencie zavádzania.

Správa miesta na pevnom disku denníka

Žurnál a všetky jeho protokolové správy sú samozrejme uložené na vašom pevnom disku. To znamená, že budú zaberať miesto na pevnom disku. Ak chcete zistiť, koľko miesta žurnál zabral, použite možnosť --disk-usage.

journalctl --disk-usage

S dnešnými pevnými diskami nie je 152 MB vôbec veľa miesta, ale pre demonštračné účely ho ešte zredukujeme. Existujú dva spôsoby, ako to môžeme urobiť. Prvým je nastavenie limitu veľkosti, na ktorý chcete denník zmenšiť. Samozrejme, že znova vyrastie, ale teraz ho môžeme orezať, pripravený na nový rast.

Použijeme nádherne nazvanú možnosť --vacuum-size a zadáme veľkosť, na ktorú chceme denník zmenšiť. Požiadame o 100 MB. Spôsob, ako si to predstaviť, je, že žiadame journalctl, aby „zahoď všetko, čo môžeš, ale neklesol pod 100 MB.“

journalctl --vacuum-size=100M

Ďalším spôsobom, ako znížiť veľkosť denníka, je použiť možnosť --vacuum-time. Táto možnosť hovorí journalctl, aby zahodil správy, ktoré sú staršie ako obdobie, ktoré zadáte na príkazovom riadku. V časovom období môžete použiť dni, týždne, mesiace a roky.

Vyraďme všetky správy staršie ako jeden týždeň:

journalctl --vacuum-time=1weeks

Údaje verzus informácie

Údaje nie sú užitočné, pokiaľ sa k nim nedostanete a nevyužijete ich. Potom sa to stane užitočnou informáciou. Príkaz journalctl je flexibilný a sofistikovaný nástroj, ktorý vám umožňuje dostať sa k informáciám, ktoré vás zaujímajú, rôznymi spôsobmi.

V protokolových správach, ktoré potrebujete, môžete použiť takmer akýkoľvek úryvok informácií, ktoré máte doma.

RELATED: Best Linux Laptops for Developers and Enthusiasts

Súvisiace články: