# Kas yra „journalctl“ ir ką jis gali?

„Journalctl“ – tai veiksmingas sprendimas, skirtas sistemos žurnalų tvarkymui ir analizei „Linux“ aplinkose. Šis įrankis gali būti naudojamas sistemos veiklai stebėti, trikčių šalinimui ir žurnalų sekimui realiuoju laiku, suteikiant svarbią informaciją, padedančią veiksmingai diagnozuoti sistemos problemas.

## Kas yra „journalctl“?

`journalctl` – tai galinga programa, skirta **ieškoti ir rodyti įvykių žurnalus** arba žurnalo failus „Linux“ sistemoje. Tai pagrindinis sistemos ir paslaugų valdymo paketo „systemd“ komponentas, kuris yra įtrauktas į daugelį šiuolaikinių „Linux“ distribucijų, pavyzdžiui, „Ubuntu“, „Fedora“ ir „Arch Linux“. Pavadinimas „journalctl“ yra sudarytas iš žodžių „journal“ (žurnalas) ir „ctl“ (valdymas), o tai reiškia, kad ši komanda naudojama žurnalams valdyti ir analizuoti.

`journalctl` palengvina prieigą prie sistemos žurnalo, kurį tvarko `systemd-journald`. Sistemos žurnalas – tai centralizuota pranešimų ir įvykių, vykstančių Linux sistemos veikimo metu, rinkinys. Skirtingai nuo tradicinių tekstinių žurnalų, `journalctl` suteikia struktūruotą ir veiksmingą būdą ieškoti, filtruoti ir rodyti **žurnalo duomenis realiuoju laiku**. Tai gali padėti diagnozuoti problemas arba stebėti sistemos būseną.

Šiuo tikslu „Journalctl“ **žurnalo failus** saugo **dvejetaine forma**, nes dvejetainiai žurnalo failai yra kompaktiškesni ir efektyvesni nei jų tekstiniai atitikmenys. Atsižvelgiant į didelį užregistruotų duomenų kiekį, tai leidžia greičiau ir efektyviau ieškoti konkrečių įvykių ar informacijos žurnalo failuose. Dėl savo struktūruoto ir šifruoto pobūdžio dvejetainiai žurnalo failai taip pat užtikrina didesnį saugumą, palyginti su tekstiniais žurnalais, nes jų formatas apsunkina žurnalo duomenų klastojimą.

## Kaip nustatyti žurnalo failų saugojimo vietą

`journalctl` galima naudoti norint apriboti ir konfigūruoti vietą, kurią žurnalo failai užima kietajame diske. Tai atliekama per **„systemd-journald“ paslaugos nustatymus**. Konfigūracijos nustatymai saugomi faile `/etc/systemd/journald.conf`. Čia rasite šiuos įrašus:

- `SystemMaxUse`: Apriboja žurnalų saugojimo vietą sistemos kataloge
- `RuntimeMaxUse`: Apriboja žurnalų saugojimo vietą laikinojoje kataloge

Norėdami nustatyti atminties ribą, įterpkite šias eilutes arba jas pakeiskite pagal poreikį:

```bash
[Journal] 
SystemMaxUse=50M 
RuntimeMaxUse=50M
```

Šio pavyzdžio reikšmės (50M) gali būti keičiamos pagal poreikį. Taip pat galite naudoti kitus vienetus, pavyzdžiui, `K` (kilobaitai), `M` (megabaitai), `G` (gigabaitai) arba `T` (terabaitai). Pakeitus konfigūracijos failą, reikia iš naujo paleisti „systemd-journald“, kad pakeitimai įsigaliotų:

```bash
sudo systemctl restart systemd-journald
```

Atlikę šiuos veiksmus, „systemd-journald“ bus sukonfigūruotas taip, kad būtų apribota žurnalo failams skirta disko vieta. Įsitikinkite, kad pasirinktas limitas yra pakankamas svarbiausiems žurnalo duomenims saugoti. Tuo pačiu svarbu vengti pernelyg didelio disko vietos naudojimo. Atminkite, kad pasiekus skirtos disko vietos limitą, **senesni žurnalai bus automatiškai pašalinti**.

### Įvertinti disko vietos naudojimą

Prieš keisdami žurnalo failų saugojimo vietos dydį, patikrinkite, kiek vietos šiuo metu užima žurnalas. Tam naudokite komandą `--disk-usage`:

```bash
journalctl --disk-usage
```

Štai pavyzdys, kaip atrodo galutinis rezultatas:

```bash
Journals take up 8.0M on disk.
```

### Ištrinti senus žurnalo įrašus

Jei žurnalas užima per daug atminties, galite ištrinti senus įrašus. Tai galima padaryti dviem būdais:

Naudokite `--vacuum-size`, kad sumažintumėte žurnalo dydį, nurodydami norimą dydį. Taikant šį metodą, senieji įrašai bus pašalinami tol, kol bendras žurnalo užimamas vietos kiekis kietajame diske pasieks norimą dydį.

```bash
sudo journalctl --vacuum-size=1G
```

Be to, žurnalą galima sutrumpinti, nustatant saugojimo laikotarpį naudojant `--vacuum-time` parinktį. Įrašai, senesni nei nurodytas laikas, bus ištrinti. Norėdami išsaugoti praėjusių metų žurnalo įrašus, galite naudoti šią komandą:

```bash
sudo journalctl --vacuum-time=1years
```

## Ką gali „Journalctl“?

`journalctl` siūlo galingas filtravimo funkcijas, leidžiančias vartotojams peržiūrėti **žurnalo įrašus pagal įvairius kriterijus**. Ši funkcija leidžia tikslingai ieškoti reikiamos informacijos, o tai padeda greičiau nustatyti problemas. Štai keletas dažniausiai naudojamų `journalctl` filtravimo parinkčių:

### Rodyti žurnalus

Vykdžius komandą `journalctl`, dabartinės sistemos žurnalo įrašai bus rodomi atvirkštine chronologine tvarka. Norėdami rodyti įrašus **realiuoju laiku,** naudokite `journalctl -f` arba `journalctl --follow`. Nauji įrašai rodomi automatiškai pagal jų gavimo tvarką.

Priklausomai nuo to, kiek laiko „systemd“ veikia jūsų sistemoje, greičiausiai bus rodomas milžiniškas duomenų kiekis, kuris gali siekti dešimtis ar šimtus tūkstančių eilučių. Norėdami greičiau rasti tai, ko ieškote, galite dar labiau filtruoti žurnalus naudodami įvairias Linux komandas.

## Kaip filtruoti pagal laiką

Naudojant `journalctl`, žurnalus galima filtruoti pagal konkretų laiko momentą, todėl juose galima efektyviau ieškoti reikiamos informacijos.

### Filtruoti pagal paleidimo procesą

Žurnalų filtravimas pagal paleidimo procesą yra nepakeičiamas norint išnagrinėti sistemos įvykius konkrečiu laiku arba įvairiose paleidimo situacijose. Šis tikslinis metodas supaprastina problemų diagnozavimą, nes žurnalo įrašai sutelkiami į konkrečias sistemos būsenas ar konfigūracijas.

1. **Dabartinis paleidimas**: Pasirinkus `journalctl -b`, rodomi visi žurnalo įrašai, surinkti nuo paskutinio perkrovimo.
2. **Ankstesni paleidimai**: Naudokite parinktį `-b`, po kurios įveskite skaičių, kad būtų rodomi žurnalo įrašai, susiję su konkrečiu ankstesniu paleidimu. Pavyzdžiui, jei įvesite `journalctl -b 1`, bus rodomas ankstesnis paleidimas.
3. **Visų galimų paleidimų sąrašas**: Komanda `journalctl --list-boots` rodo galimų paleidimų sąrašą su atitinkamais ID. Galite naudoti norimą paleidimo ID, kad būtų rodomi konkretaus paleidimo žurnalai.

Nors kai kuriose „Linux“ distribucijose ankstesnių paleidimo procesų išsaugojimas įjungtas pagal numatytuosius nustatymus, kitose distribucijose vartotojams gali tekti jį **įjungti patys**. Norėdami tai padaryti, sukurkite katalogą, kuriame bus saugomas žurnalas, įvesdami `sudo mkdir -p /var/log/journal`. Arba galite redaguoti žurnalo konfigūracijos failą, naudodami `sudo nano /etc/systemd/journald.conf`. Tada nustatykite parinktį `Storage=`, esančią po `[Journal]`, į `persistent`, kad įjungtumėte nuolatinį žurnalo įrašymą:

```bash
. . . 
[Journal] 
Storage=persistent
```

### Filtruoti pagal laiko intervalą

Kartais gali prireikti peržiūrėti žurnalo įrašus už konkretų laikotarpį. `journalctl` siūlo parinktis `--since` ir `--until`, kurias galima naudoti įrašams apriboti iki **konkretaus laikotarpio**. Tam naudokite laiko formatą `YYYY-MM-DD HH:MM:SS`. Komanda, skirta peržiūrėti visus žurnalo įrašus nuo 2023 m. sausio 1 d. 12:00 iki 2023 m. sausio 2 d. 12:00, atrodo taip:

```bash
journalctl --since "2023-01-01 12:00:00" --until "2023-01-02 12:00:00"
```

Šias dvi komandas suderinus taip pat galima filtruoti trumpesnį laikotarpį:

```bash
journalctl --since 09:00 --until "1 hour ago"
```

Arba galite praleisti tam tikras formato dalis. Pavyzdžiui, jei norite rodyti visus įrašus, pradedant nuo tam tikro laiko momento:

```bash
journalctl --since "2023-11-16 15:25:00"
```

`journalctl` taip pat atpažįsta santykines reikšmes, pavyzdžiui, `yesterday`, `today` ar `tomorrow`. Norėdami peržiūrėti vakarykščius įrašus, įveskite šią komandą:

```bash
journalctl --since yesterday
```

## Kaip filtruoti pagal pranešimų charakteristikas

`journalctl` naudojimas žurnalo įrašams filtruoti pagal svarbą ar turinį taip pat yra labai naudingas, nes leidžia **ieškoti reikiamos informacijos ir sutelkti dėmesį į konkrečius sistemos žurnalų aspektus**. Tai, be kita ko, užtikrina veiksmingą klaidų diagnostiką, ankstyvą saugumo problemų nustatymą ir greitą našumo stebėjimą.

### Filtruoti pagal prioritetą

Norėdami filtruoti žurnalus pagal `journalctl` svarbą, galite naudoti **žurnalo įrašų prioritetų kategorijas**. Tam galite naudoti prioritetų pavadinimus arba jiems atitinkančias skaitmenines vertes. Kuo skaičius mažesnis, tuo pranešimas svarbesnis:

- 0: emerg (avarinis)
- 1: alert (pavojaus signalas)
- 2: krit (kritinis)
- 3: klaida (klaida)
- 4: įspėjimas (įspėjimas)
- 5: notice (pastaba)
- 6: info (informacija)
- 7: debug (trikčių šalinimas)

Naudojant parinktį `-p` galima filtruoti pranešimus, turinčius tam tikrą prioritetą. Pavyzdžiui, ši komanda rodo tik žurnalo įrašus, kurių prioritetas yra „err“ (klaida) ar aukštesnis:

```bash
journalctl -p err
```

### Filtruoti pagal vienetą

Žurnalų filtravimas pagal vienetą yra naudingas norint sutelkti dėmesį į konkrečias paslaugas ar procesus. Juos galima filtruoti naudojant parinktį `-u`. Pavyzdžiui, norėdami peržiūrėti žurnalo įrašus, susijusius su „Apache“ žiniatinklio serveriu, įveskite šią komandą:

```bash
journalctl -u apache2
```

Paiešką galima dar labiau patikslinti naudojant santykinius laiko parametrus. Norėdami nustatyti, ar paslauga šiandien jau buvo suteikta, galite įvesti šią informaciją:

```bash
journalctl -u apache2 --since today
```

`journalctl` gali sujungti duomenų įrašus iš skirtingų vienetų. Pavyzdžiui, jei jūsų „Nginx“ procesas yra susietas su „PHP FPM“ vienetu, jų įrašai gali būti sujungti chronologine tvarka. Tam skirta komanda yra:

```bash
journalctl -u nginx.service -u php-fpm.service --since today-u apache2 --since today
```

### Filtruoti pagal proceso, vartotojo arba grupės ID

Komanda „journalctl“ gali filtruoti žurnalo įrašus pagal proceso, vartotojo arba grupės ID. Jei žinote **tikslią proceso, kurį** norite surasti, **PID**, galite naudoti `_PID` parinktį įrašams filtruoti. Pavyzdžiui, jei PID yra 8088, komanda atrodytų taip:

```bash
journalctl _PID=8088
```

Be to, galite naudoti filtrus `_UID` arba `_GID`, kad būtų rodomi visi įrašai, kuriuos užregistravo konkretus vartotojas ar grupė. Pavyzdžiui, jei jūsų žiniatinklio serverio vardas yra „www-data“, vartotojo ID galite rasti atlikdami šiuos veiksmus:

```bash
id -u www-data
33
```

Žurnalo įrašus galima filtruoti pagal ID:

```bash
journalctl _UID=33 --since today
```

Norėdami nustatyti, kurioms grupės ID įrašams buvo sukurti įrašai, galite pasinaudoti `-F` parinktimi. Tai parodys visas reikšmes, kurios buvo išsaugotos lauke „Grupės ID“:

```bash
journalctl -F _GID
```

Štai pavyzdys, kaip atrodys rezultatas:

```bash
32
99
102
133
81
84
100
0
124
87
```

### Filtruoti pagal komponentą

Filtravimas pagal komponentą yra naudingas norint sutelkti dėmesį į konkrečias programas, paslaugas ar procesus. Laukelis „Komponentas“ paprastai naudojamas **įvairiose paslaugose ar programinės įrangos komponentuose**, siekiant išskirti konkrečią informaciją žurnaluose. Šis filtravimas leidžia susiaurinti žurnalo įrašų paiešką iki konkretaus komponento, programos ar paslaugos vieneto. Pavyzdžiui, norėdami filtruoti įrašus, kuriuose yra vykdomasis failas `bash`, įveskite šią komandą:

```bash
journalctl /usr/bin/bash
```

### Rodyti branduolio pranešimus

Žurnalo įrašų filtravimas pagal branduolio pranešimus su `journalctl` yra veiksmingas būdas analizuoti informaciją apie branduolio veikimą Linux sistemoje. Branduolio pranešimai gali **signalizuoti apie aparatinės įrangos problemas, tvarkyklių konfliktus ar kitus sistemos įvykius**.

Branduolio pranešimus, kuriuos galima rasti `dmesg` išvestyje, taip pat galima filtruoti iš žurnalo. Juos galima peržiūrėti naudojant komandą `-k or ``:

```bash
journalctl -k
```

Pagal numatytuosius nustatymus rodomi dabartinio paleidimo proceso branduolio pranešimai. Naudodami anksčiau minėtus paleidimo pasirinkimo žymes, galite filtruoti pranešimus iš **alternatyvaus paleidimo**. Jei, pavyzdžiui, norite peržiūrėti paskutinių penkių paleidimo procesų branduolio pranešimus, įveskite:

```bash
journalctl -k -b -5
```

## Žurnalo rodymo nustatymų keitimas „Journalctl“

Pritaikius ekrano rodymą `journalctl` versijoje, vartotojai gali tiksliau ieškoti įvykių žurnaluose ir greitai išgauti reikiamą informaciją. Vartotojai gali pritaikyti ekrano rodymą taip, kad būtų rodomi įvykių žurnalo duomenys už konkretų laikotarpį arba realiuoju laiku, o tai padeda greitai nustatyti sistemos klaidas ir problemas.

### Išvesties sutrumpinimas arba išplėtimas

Galite pritaikyti, kaip `journalctl` rodo duomenis, sutrumpindami arba išplėsdami išvestį. Pagal numatytuosius nustatymus `journalctl` rodo visą įrašą pageryje ir juos išdėsto ekrano dešinėje pusėje. Išvestį galima sutrumpinti naudojant `--no-full` parinktį:

```bash
journalctl --no-full
```

Ekraną galite išplėsti naudodami žymę `-a` “:

```bash
journalctl -a
```

### Nustatyti `journalctl` į standartinį išvesties srautą

`journalctl` versijoje žurnalo išvestis pagal numatytuosius nustatymus rodoma naudojant pagerį, pvz., `less`. Tai leidžia vartotojams peržiūrėti išvestį dalimis, todėl jiems lengviau naršyti po ilgus žurnalo failus. Tačiau kartais būtina rodyti standartinę žurnalo išvestį. Štai kaip tai padaryti:

```bash
journalctl --no-pager
```

### Nustatyti išvesties formatus

`journalctl` taip pat siūlo galimybes pritaikyti žurnalų išvesties formatą. Tam galite naudoti `-o` parinktį su atitinkamu formato identifikatoriumi. Pavyzdžiui, norėdami išvesti žurnalo įrašus JSON formatu, įveskite šį kodą:

```bash
journalctl -b -u nginx -o json
```

Štai rezultatas:

```bash
{ "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" :
```

„Journalctl“ galima naudoti šiuos formatus:

- **cat**: rodo tik pranešimo lauką
- **eksportas**: Dvejetainis formatas, tinkamas perdavimui ar išsaugojimui
- **json**: Standartinis JSON, po vieną įrašą eilutėje
- **json-pretty**: JSON, suformatuotas geresniam skaitymui
- **json-sse**: suformatuotas išvesties JSON, leidžiantis pridėti serverio siunčiamus įvykius
- **short**: Standartinis syslog stiliaus išvesties formatas
- **short-iso**: Standartinis formatas, skirtas rodyti ISO-8601 realaus laiko žymes
- **short-monotonic**: Standartinis formatas su monotoniškais laiko žymėmis
- **short-precise**: Standartinis formatas su mikrosekundžių tikslumu
- **verbose**: Rodo kiekvieną žurnalo lauką, kuris yra prieinamas atitinkamam įrašui

## Kaip `journalctl` vykdo aktyvią procesų stebėseną?

Atliekant aktyvų procesų stebėjimą naudojant `journalctl`, komandinės eilutės programa `tail` naudojama žurnalams stebėti realiuoju laiku ir rodyti naujausius įrašus. Tai leidžia lengviau stebėti sistemos įvykius realiuoju laiku ir greitai reaguoti į problemas.

## Kaip peržiūrėti esamus žurnalus

Parinktį `-n` galima naudoti norint parodyti tam tikrą duomenų įrašų skaičių. Ji veikia lygiai taip pat kaip ir `tail -n`“. Norėdami parodyti paskutinius 10 įrašų, naudokite šią komandą:

```bash
journalctl -n
```

Taip pat galite nustatyti įrašų skaičių, pvz., iki 20:

```bash
journalctl -n 20
```


This is a markdown version of: [https://www.ionos.com/lt-lt/digitalguide/serveris/irankiai/journalctl/](https://www.ionos.com/lt-lt/digitalguide/serveris/irankiai/journalctl/) for AI/LLM consumption.