Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Logid ja teenused, mis kuulub osasse Osa III: Failid, võrk ja süsteemitöö.

Logid ja teenused

Selles peatükis vaatame, kust otsida logisid ja kuidas vaadata teenuste seisundit, eriti Linuxi süsteemides.

Loogika

Kui mõni teenus ei tööta, siis väga sageli on kaks kõige tähtsamat küsimust:

  1. kas teenus üldse töötab
  2. mida logid selle kohta ütlevad

Just siin kohtuvad kaks tööriistamaailma:

  • teenuse seisund
  • logifailid või journal

Kiirspikker

  • systemctl status nimi näitab teenuse seisu
  • journalctl -u nimi näitab selle teenuse journal'i
  • journalctl -n 50 näitab viimaseid kirjeid
  • tail -f fail.log jälgib logifaili reaalajas
  • /var/log sisaldab paljusid logifaile

Käivita need käsud

Linuxis:


systemctl status ssh
journalctl -u ssh -n 50
journalctl -n 50
ls /var/log | head

Kui sul ei ole systemd-d või teenuse nimi on teine, siis vaata vähemalt logifaile:


tail -n 50 /var/log/syslog
tail -n 50 /var/log/messages

Kui tahad viimaseid ridu rahulikult sirvida, siis väga praktiline on:


tail -n 50 /var/log/syslog | less

Teenus ja protsess ei ole päris sama asi

Teenuse puhul mõtle nii:

  • teenus on süsteemi hallatav töö
  • protsess on selle töö jooksev eksemplar

See tähendab, et vahel on kasulik vaadata nii teenust kui protsessi, aga alguses tasub teenuse puhul alustada just:


systemctl status nimi

systemctl status

Näide:


systemctl status ssh

See aitab näha:

  • kas teenus on aktiivne
  • kas ta käivitub süsteemi stardis
  • kas viimastes teadetes paistab mõni viga

Teenuse nimi võib süsteemiti erineda. Näiteks:

  • mõnes süsteemis on nimi ssh
  • mõnes sshd

Kui üks ei tööta, proovi teist.

journalctl

Kui teenus ei tööta, siis järgmine väga praktiline samm on:


journalctl -u ssh -n 50

See näitab viimaseid kirjeid just selle teenuse kohta.

Kasulikud variandid:


journalctl -u ssh --since today
journalctl -u ssh -f

Siin tähendab:

  • --since today näita tänaseid kirjeid
  • -f jälgi juurde tulevaid logisid

Logifailid kaustas /var/log

Mitte kõik süsteemid ei kasuta journal'it samal viisil. Väga tihti jõuad ka tavaliste logifailideni.

Näited:

  • /var/log/syslog
  • /var/log/messages
  • teenuse enda logikaust

Logide vaatamiseks on praktilised:


tail -n 50 /var/log/syslog
tail -f /var/log/syslog

Kui üks fail puudub, proovi teist. Logide nimed ei ole kõigis distributsioonides samad.

macOS-i märkus

macOS-is ei ole süsteemi teenuste maailm päris sama mis systemd-ga Linuxis.

Seal kohtad sagedamini:

  • launchd
  • käske nagu log show

Selle raamatu peatükk on teadlikult rohkem Linuxi poole kaldu, sest systemctl ja journalctl on just seal kõige kesksemad.

Praktiline kontrolljärjekord

Kui teenus ei tööta, siis alusta nii:

  1. systemctl status nimi
  2. journalctl -u nimi -n 50
  3. vaata, kas logifailis on sama vea jälg
  4. kontrolli vajadusel ka võrgupeatükist, kas teenus kuulab õigel pordil

See seob hästi kokku peatükid Võrgu põhitööriistad ja Protsessid, tööd ja signaalid.

Päris näide ilma systemd-ta: näidisfail app.log

Kui sul parasjagu ei ole käepärast Linuxi teenust koos systemctl-iga, saad sama mõtte treenimiseks kasutada näidisfaili app.log:


cp data/app.log app.log
tail -n 20 app.log

See annab kohe viimased kirjed kätte.

Kui tahad näha ainult vead:


grep ' ERROR ' app.log | tail -n 10

Kui tahad viimased kirjed enne rahulikult läbi sirvida, siis:


tail -n 50 app.log | less

Kui tahad vaadata ainult andmebaasi mooduli vigu:


grep 'module=db' app.log | grep ' ERROR '

See on väga päris töövoog:

  • esimene filter valib mooduli
  • teine filter valib vea

Päris näide: jälgi logi reaalajas

Ühes terminalis:


cp data/app.log app.log
tail -f app.log

Teises terminalis lisa paar rida:


cat >> app.log <<'EOF'
2026-04-13T21:40:00 ERROR host=tallinn-app module=api user=vilo message="manual test error"
2026-04-13T21:40:02 WARN host=tallinn-app module=api user=vilo message="manual test warning"
EOF

See on väga hea harjutus, sest siis näed oma silmaga:

  • kuidas logi kasvab
  • miks tail -f on kasulik
  • kuidas logid, protsessid ja teenused päriselus kokku käivad

Päris näide: too logi veebist oma hostilt

Kui paned õpiku andmefailid veebiserverisse, siis võid kasutada ka sellist töövoogu:


BASE_URL="https://sinu-domeen/~vilo/linux"
curl -L "$BASE_URL/data/app.log" -o app.log
grep ' ERROR ' app.log | tail -n 10

See näitab hästi, kuidas logi:

  • tuuakse alla
  • salvestatakse faili
  • filtreeritakse edasi käsureal

Minitest

  1. Vaata mõne tuntud teenuse olekut käsuga systemctl status.
  2. Vaata sama teenuse viimaseid logikirjeid.
  3. Uuri, millised logifailid sinu süsteemis /var/log all olemas on.
  4. Pane ühe lausega kirja, mis vahe on teenuse seisul ja logidel.
  5. Filtreeri data/app.log failist välja ainult ERROR read.