Logid ja teenused
Teenus on süsteemi hallatav taustatöö; selle olek ütleb, kas see töötab, logi aitab mõista juhtunut. Üks teenus võib käivitada mitu protsessi. Alusta olekust, seejärel vaata sama teenuse hiljutisi teateid.
systemd-ga Linux
Järgmised käsud vajavad systemd-d. Need ei ole macOS-i käsud ega tööta igas Linuxi konteineris või WSL-i seadistuses. systemctl uurib teenust, journalctl loeb süsteemipäevikut.
| Käsk | Mida näed |
|---|---|
systemctl status ssh | teenuse olek, käivituse andmed ja viimased teated |
journalctl -u ssh -n 50 | -u valib teenuse, -n viimaste kirjete arvu |
journalctl -u ssh --since today | kirjed alates tänase päeva algusest |
journalctl -u ssh -f | -f jääb lisanduvaid kirjeid ootama; lõpeta Ctrl-c-ga |
SSH-teenus võib olla nimega sshd, mitte ssh, või üldse paigaldamata. Asenda näites nimi oma teenusega. Unit ... could not be found ei tähenda sama mis olemasoleva teenuse failed-olek. Lehitsetavast vaatest välju q-ga.
Olek active ja käivitamisel lubatud olek enabled ei ole sama: teenus võib praegu töötada, kuid mitte järgmisel alglaadimisel. -- No entries -- ei tõesta vigade puudumist; põhjuseks võivad olla vale nimi, piiratud lugemisõigus või teistsugune logimine.
macOS kasutab teenuste halduseks launchd-d ja süsteemilogide jaoks muu hulgas käsku log show. Tavalise tekstilogiga saad mõlemas süsteemis teha järgmise katse.
Vaata logi kasvamist kahes aknas
Loo esimeses terminalis oma näidislogi. printf kirjutab ühe rea, > kirjutab samanimelise faili üle. Ära kasuta selleks päris teenuse logi.
mkdir -p ~/tmp/logi-naide
cd ~/tmp/logi-naide
printf '%s\n' 'INFO teenus käivitus' > app.log
tail -f app.log
Näed algset rida ja käsk jääb ootama. Teises terminalis kasuta täisteed, sest uus aken ei pruugi olla samas kataloogis. >> lisab lõppu, mitte ei kirjuta algust üle:
printf '%s\n' 'WARN ühendus aeglane' 'ERROR ühendus katkes' >> ~/tmp/logi-naide/app.log
Esimesse aknasse ilmuvad uued read. Katkesta seal jälgimine Ctrl-c-ga; see ei kustuta logi ega lõpeta seda kirjutanud teenust. Käsk tail -n 2 app.log näitab nüüd ainult kaht viimast rida.
Leia oluline sündmus
Päris logis on tavaliselt ajatempel, tähtsusaste ja sõnum. Märksõnad nagu ERROR, failed ja denied aitavad alustada, kuid loe ka ümbritsevaid ridu: viimane viga võib olla varasema vea tagajärg.
Otsingu peatükis õpid eraldama veakirjeid käsuga grep. Suuremat näidislogi pakub õpiku andmefail.
Süsteemi tekstilogid võivad asuda näiteks /var/log/syslog või /var/log/messages, kuid need failid ei pea sinu süsteemis olemas olema. Ära loo puuduvat süsteemilogi käsitsi ega muuda päris logide õigusi lihtsalt vaatamise hõlbustamiseks.
Minitest
- Lisa näidislogisse kolmas sündmus ja vaata, kuidas see esimesse aknasse ilmub.
- Kuidas erinevad
tail -n 2jatail -f? - Kui kasutad systemd-ga Linuxit, leia üks olemasolev teenus ja võrdle selle olekut viimaste logiteadetega.
- Miks ei tõesta tühi logivaade, et teenus töötab veatult?
Peatüki täisspikker
Praktiline kasutus
Eesmärk
Kontrolli teenuse olekut ja seejärel sama teenuse logi. systemctl/journalctl vajavad systemd-ga Linuxit.
Käsud ja näited
systemctl status sshteenuse seis ja hiljutised teated; nimi võib olla sshdjournalctl -u ssh -n 50selle teenuse viimased 50 kirjetjournalctl -u ssh --since todaytänased teenusekirjedjournalctl -u ssh -fjälgi juurde tulevaid kirjeidtail -n 20 app.logtavalise logifaili lõpp, ka ilma systemd-tatail -f app.logjälgi faili; Ctrl-c lõpetab jälgimise