Logid ja teenused
Loogika
Kui mõni teenus ei tööta, alusta kahest küsimusest:
- kas teenus üldse töötab
- mida logid selle kohta ütlevad
Teenuse seisu vaatad tavaliselt systemctl abil. Vea põhjuse otsimiseks liigud edasi journalctl või logifailide juurde.
Kiirülevaade
Eesmärk on muuta “miski ei tööta” kontrollitavaks küsimuseks: kas teenus töötab ja mida logi ütleb.
| Käsk | Milleks | Mida tavaliselt näed |
|---|---|---|
systemctl status nimi | küsi teenuse seisu | aktiivsus, käivitus ja viimased teated |
journalctl -u nimi | vaata teenuse journali | järjest logiridu |
journalctl -n 50 | vaata viimaseid kirjeid | viimased 50 logirida |
tail -n 50 fail | vaata logifaili lõppu | faili viimased read |
tail -f fail | jälgi logi reaalajas | käsk jääb uusi ridu ootama |
Logides on sageli kõige kasulikumad sõnad ERROR, WARN, failed, denied ja timeout.
Tüüpilised algaja vead
- loetakse kohe logi, ilma et teenuse seis üle kontrollitaks
- vaadatakse vale teenuse nime, näiteks
sshvssshd - unustatakse, et
tail -flõpetatakse tavaliseltCtrl-c-ga - otsitakse “üht õiget faili”, kuigi süsteem võib kasutada kas journal'it või tavapäraseid logifaile
Kiirspikker
systemctl status niminäitab teenuse seisujournalctl -u niminäitab selle teenuse journal'ijournalctl -n 50näitab viimaseid kirjeidtail -f fail.logjälgib logifaili reaalajas/var/logsisaldab 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 lehitsetavas vaates sirvida:
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, vaata viimaseid selle teenuse kirjeid:
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 todaynäita tänaseid kirjeid-fjä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:
systemctl status nimijournalctl -u nimi -n 50- vaata, kas logifailis on sama vea jälg
- 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 -fon 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
- Vaata mõne tuntud teenuse olekut käsuga
systemctl status. - Vaata sama teenuse viimaseid logikirjeid.
- Uuri, millised logifailid sinu süsteemis
/var/logall olemas on. - Pane ühe lausega kirja, mis vahe on teenuse seisul ja logidel.
- Filtreeri
data/app.logfailist välja ainultERRORread.
Peatüki täisspikker
Praktiline kasutus
Eesmärk
kui teenus ei tööta, alusta kahest küsimusest: kas teenus on üldse aktiivne ja mida logid selle kohta ütlevad
Põhikujud
systemctl status sshvaata seisujournalctl -u ssh -n 50loe viimast logijournalctl -u ssh -fjälgi teenusttail -n 50 /var/log/syslogloe faili lõpputail -f /var/log/syslogjälgi failitail -n 50 /var/log/syslog | lesssirvi viimaseid ridu
Olulisemad lipud, märgid ja kiirnupud
statusteenuse seis-u nimiüks teenus-n 50viimased read-fjälgi reaalajas--since todayainult tänane