Како користити јоурналцтл за читање дневника система Линук

Управљање евиденцијама у Линук системима претрпело је значајну трансформацију са увођењем systemd-а. Сазнајте како користити команду `journalctl` за преглед и филтрирање системских дневничких порука.

Централизовани систем евидентирања

Иако је био предмет контроверзи, `systemd` систем и управљач услугама донели су кључне промене у прикупљању системских евиденција. Раније су се дневници налазили на различитим локацијама, зависно од услуге или демона који их је генерисао. Међутим, сви су делили једну карактеристику: били су то обични текстуални фајлови.

Са systemd-ом, све евиденције система, покретања и језгра се прикупљају и управљају путем централизованог система за евидентирање. Формат у којем се чувају је бинарни. Ово, између осталог, олакшава екстракцију података у различитим форматима, као што је JSON, што ћемо ускоро видети.

Овај приступ такође поједностављује унакрсно повезивање релевантних информација, које су се претходно чувале у одвојеним фајловима дневника. Сада, када су подаци смештени у једном часопису, могуће је одабрати и приказати податке из више извора у јединственој, испреплетаној листи уноса.

Команда `journalctl` је алат за рад са часописом.

Основна употреба команде `journalctl`

Команду `journalctl` можете покренути без додатних параметара:

journalctl

Команда `journalctl` ће приказати комплетан часопис, са најстаријим уносима на почетку листе. Листа се приказује у пагинатору, омогућавајући вам навигацију користећи стандардне функције пагинатора. Такође, можете користити стрелице лево и десно за хоризонтално померање приликом прегледа широких уноса дневника.

Притиском на тастер `End` се брзо пребацујете на крај листе и најновије уносе.

За излаз притисните `Ctrl+C`.

Иако се `journalctl` може покренути без употребе `sudo`, коришћењем `sudo` ћете осигурати да видите све детаље у дневнику.

sudo journalctl

Ако је потребно, можете присилити `journalctl` да прикаже излаз у прозору терминала уместо у пагинатору, користећи опцију `–no-pager`.

sudo journalctl --no-pager

Излаз ће се брзо кретати кроз прозор терминала, након чега ћете се вратити на командну линију.

Да бисте ограничили број линија које `journalctl` враћа, користите опцију `-n` (линија). На пример, за захтев десет линија излаза:

sudo journalctl -n 10

Праћење дневничких уноса уживо

Да бисте омогућили да `journalctl` приказује најновије уносе чим стигну у дневник, користите опцију `-f` (прати).

sudo journalctl -f

Најновији унос има временску ознаку 07:09:07. Како се нова активност одвија, нови уноси се додају на дно екрана. Ажурирања у скоро реалном времену – одлично!

У 07:09:59 апликација под називом `geek-app` је убацила унос у дневник са поруком: „Нова порука од ХТГ-а.“

Измена формата приказа

Будући да је дневник бинарни фајл, подаци у њему морају бити преведени или рашчлањени у текст пре него што се прикажу. Користећи различите парсере, могу се генерисати различити излазни формати из истих бинарних изворних података. `journalctl` може користити неколико различитих формата.

Подразумевани излаз је кратки формат, који је веома сличан класичном формату системског дневника. Да бисте експлицитно захтевали кратки формат, користите опцију `-o` (излаз) са модификатором `short`.

sudo journalctl -n 10 -o short

С лева на десно, поља су:

Време када је порука креирана, у локалном времену.
Име домаћина.
Назив процеса. Ово је процес који је створио поруку.
Порука дневника.

За приказ пуног датума и временске ознаке, користите модификатор `short-full`:

sudo journalctl -n 10 -o short-full

Формати датума и времена у овом излазу су онај који треба да користите приликом одабира порука дневника по периоду, као што ћемо видети ускоро.

За приказ свих метаподатака који прате сваку поруку дневника, користите модификатор `verbose`.

sudo journalctl -n 10 -o verbose

Постоји мноштво могућих поља, али није уобичајено да сва поља буду присутна у поруци.

Једно поље о којем вреди говорити је поље приоритета. У овом примеру, оно има вредност 6. Вредност представља важност поруке:

0: Хитно. Систем је неупотребљив.
1: Упозорење. Означено је стање које треба одмах кориговати.
2: Критичан. Ово покрива падове, core dumps и значајне кварове у основним апликацијама.
3: Грешка. Пријављена је грешка, али се не сматра озбиљном.
4: Упозорење. Скреће пажњу на услов који, ако се занемари, може довести до грешке.
5: Напомена. Користи се за пријављивање догађаја који су необични, али не представљају грешке.
6: Информација. Редовне оперативне поруке. Не захтева акцију.
7: Дебаговање. Поруке које апликације користе ради лакшег дебаговања.

Ако желите да се резултат прикаже као правилно форматиран JavaScript Object Notation (JSON) објекат, користите `json` модификатор:

sudo journalctl -n 10 -o json

Свака порука је умотана у правилно формиран JSON објекат, и приказује се једна порука по линији излаза.

За приказ JSON излаза у pretty print формату, користите модификатор `json-pretty`.

sudo journalctl -n 10 -o json-pretty

Сваки JSON објекат је подељен на више линија, са сваким паром име-вредност у новом реду.

Да бисте видели само поруке дневника, без временских ознака или других метаподатака, користите модификатор `cat`:

sudo journalctl -n 10 -o cat

Овај формат приказа може отежати идентификацију процеса који је покренуо догађај, иако неке поруке садрже траг.

Одабир порука дневника према временском периоду

Да бисте ограничили излаз команде `journalctl` на временски период који вас занима, користите опције `-S` (од) и `-U` (до).

За приказ уноса дневника од одређеног времена и датума, користите следећу команду:

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

На екрану се налазе само поруке које су стигле после датума и времена у команди.

Да бисте дефинисали временски период за извештај, користите опције `-S` (од) и `-U` (до) заједно. Следећа команда прегледа поруке дневника из временског периода од 15 минута:

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

Ово је корисна комбинација ако знате да се нешто необично догодило на вашем систему и отприлике када се то десило.

Коришћење релативних временских периода

Можете користити релативно адресирање приликом дефинисања временских периода. То значи да можете користити изразе попут „прикажи ми све догађаје од пре једног дана до сада“. Ово је управо оно што следећа команда ради. „d“ означава „дан“, а „-1“ означава један дан у прошлости.

sudo journalctl -S -1d

Поруке дневника се приказују од 00:00:00 јуче, па све до тренутног времена.

Ако желите да истражите догађај који се догодио у недавној прошлости, можете одредити релативни временски период мерен у сатима. Овде прегледамо поруке дневника од протеклог сата:

sudo journalctl -S -1h

Приказују се поруке из протеклог сата. Такође можете користити „m“ за релативне временске периоде мерене у минутима, а „w“ за недеље.

`journalctl` разуме изразе `today` (данас), `yesterday` (јуче) и `tomorrow` (сутра). Ови модификатори нуде практичан начин за дефинисање уобичајених временских периода. За приказ свих догађаја који су се догодили јуче, користите следећу команду:

sudo journalctl -S yesterday

Сви догађаји у дневнику који су се догодили јуче, до поноћи 00:00:00, се преузимају и приказују.

За приказ свих до сада примљених порука, користите ову команду:

sudo journalctl -S today

Приказује се све од 00:00:00 до тренутка издавања команде.

Можете комбиновати различите модификаторе временског периода. Да бисте видели све од пре два дана па до почетка данашњег дана, користите следећу команду:

sudo journalctl -S -2d -U today

Све од прекјуче до данас се преузима и приказује.

Одабир порука дневника на основу поља података

Можете претраживати поруке дневника користећи широк спектар поља часописа. Ове претраге покушавају да пронађу подударања у метаподацима приложеним уз сваку поруку. Препоручује се да прегледате листу поља и одаберете оне који ће вам бити најкориснији.

Имајте на уму да ли ће апликација попунити свако поље или не, зависи у потпуности од аутора апликације. Не можете гарантовати да ће свако поље бити попуњено.

Сви модификатори поља дневника се користе на исти начин. У наставку ћемо користити неколико примера. Да бисте потражили поруке дневника одређене апликације, користите модификатор `_COMM` (команда). Ако такође користите опцију `-f` (follow), `journalctl` ће пратити нове поруке из ове апликације чим стигну.

sudo journalctl -f _COMM=geek-app

Можете претраживати уносе у дневнику користећи ID процеса који је генерисао поруку дневника. Користите команду `ps` да бисте пронашли ID процеса демона или апликације коју тражите.

sudo journalctl _PID=751

На машини коришћеној за истраживање овог чланка, SSH демон је процес 751.

Можете претраживати и по ID-у корисника. Ово је ID корисника који је покренуо апликацију или команду, или корисника који је власник процеса.

sudo journalctl _UID=1000

Све поруке повезане са било којим другим корисничким ID-ом се филтрирају. Приказују се само поруке које се односе на корисника 1000:

Други начин за претрагу порука дневника које се односе на одређену апликацију је да наведете путању до извршног фајла.

sudo journalctl /usr/bin/anacron

Све поруке дневника `anacron` планера се преузимају и приказују.

Да бисмо олакшали претрагу, можемо затражити од `journalctl`-а да наведе све вредности које садржи за било које од поља часописа.

За приказ ID-а корисника за које је `journalctl` забележио поруке дневника, користите опцију `-F` (поља) и проследите идентификатор поља `_UID`.

journalctl -F _UID

Урадимо то поново и погледајмо <a rel=“nofollow noopener“ target=“_blank“ href=“https://en.wikipedia