Ponekad je potrebno više puta pokrenuti određenu naredbu ili program kako biste pratili različite aspekte vašeg sistema. Na primer, možda želite da nadgledate tekuće procese, iskorišćenost prostora na disku ili prijavljene korisnike. Linux `watch` komanda omogućava vam da automatizujete ove zadatke, oslobađajući vas potrebe da ih ponavljate ručno.
Korišćenjem ove komande, možete pratiti sistemske aktivnosti uživo, kao što su prijave korisnika, status mreže, upotreba memorije i CPU-a, zauzeće diska i druge. Pogledajmo kako se koristi komanda `watch` u Linux okruženju.
Šta je to komanda `watch`?
Linux komanda `watch` izvršava specificiranu naredbu ili program uzastopno, u redovnim vremenskim intervalima, i prikazuje njen izlaz direktno u terminalu. Ovo vam omogućava da posmatrate promene u izlazu u realnom vremenu. Izlaz se osvežava nakon svakog intervala, zamenjujući prethodni prikaz komande. Po defaultu, komanda se ponavlja svakih dve sekunde i nastavlja da radi sve dok je ručno ne zaustavite kombinacijom tastera Ctrl + C.
Sintaksa komande `watch`
Osnovna sintaksa za komandu `watch` je sledeća:
watch [opcije] <komanda>
Postoji niz različitih opcija komandne linije koje se mogu koristiti sa komandom `watch`. Ako pokrenete `watch` bez ikakvih opcija, ona će izvršavati navedenu komandu svakih dve sekunde. Na primer, sledeća naredba prikazuje izlaz naredbe `ls`:
watch ls -l ~/
Izlaz će prikazati promene u listi direktorijuma kada se datoteka kreira, briše ili promeni veličinu, dok se izlaz automatski osvežava svake dve sekunde.
Izvršavanje komande svakih X sekundi pomoću `watch`
Možete izmeniti interval osvežavanja komande `watch`. To znači da možete narediti komandi `watch` da sačeka određeni broj sekundi pre nego što ponovo izvrši komandu. Da biste promenili interval osvežavanja, koristite opciju `-n` nakon koje sledi vremenski interval u sekundama.
watch -n
Na primer, da biste pokrenuli komandu svakih 5 sekundi, koristite:
watch -n 5 <komanda>
Isticanje promena između osvežavanja
Komanda `watch` prepisuje svoj izlaz prilikom svakog osvežavanja. Koristeći opciju `-d`, možete takođe da istaknete promene između prethodnog i novog izlaza.
watch -d
Sakrivanje zaglavlja u izlazu komande `watch`
Podrazumevano, komanda `watch` prikazuje zaglavlje na vrhu svakog izlaza, koje sadrži interval osvežavanja, ime komande i trenutni datum i vreme sistema. Možete ukloniti zaglavlje iz izlaza koristeći opciju `-t`:
watch -t <komanda>
Zvučni signal prilikom greške
Kada Linux proces završi sa radom, on vraća izlazni kod. Konvencionalno, vrednost `0` označava uspeh, dok vrednost koja nije nula ukazuje na grešku. Opcija `-b` komande `watch` emituje zvučni signal ako komanda vrati izlaz koji nije nula.
Pretpostavimo da želite da nadgledate `sshd.service` i da budete obavešteni kada se servis zaustavi; koristili biste:
watch -b sudo systemctl status sshd.service
Ova naredba će emitovati zvučni signal kada se servis zaustavi. Signal će prestati kada se servis ponovo pokrene. Da biste testirali ovu funkcionalnost, otvorite drugi terminal i zaustavite servis. Zvučni signali će se emitovati neprekidno dok ponovo ne pokrenete servis. Imajte na umu da morate imati instaliran `beep` paket na vašem sistemu da biste koristili ovu opciju.
Izlazak iz komande `watch` pri promeni izlaza
Takođe možete da naredite komandi `watch` da prestane sa radom i izađe kada se izlaz komande promeni. To se može postići korišćenjem opcije `-g`. Ova opcija je izuzetno korisna u scenarijima kada očekujete određene promene u izlazu.
Kada se izlaz promeni, komanda `watch` će se zaustaviti. Ovu upotrebu možete kombinovati sa komandom `echo` da biste prikazali poruku na ekranu.
Na primer, razmotrite situaciju gde čekate da datoteka stigne u vaš direktorijum. Sledeća komanda će nadgledati direktorijum za specificiranu datoteku. Čim datoteka stigne, komanda `watch` će prestati da radi i na terminalu će se prikazati poruka „datoteka stigla“.
watch -g "ls -l | grep filename" && echo "file arrived"
Drugi koristan primer je obaveštenje kada se određeni korisnik prijavi na vaš sistem:
watch -g "who | grep username" && echo "username logged in"
Ova komanda će nadgledati izlaz naredbe `who`, koja navodi sve prijavljene korisnike. Kada se specificirani korisnik prijavi, komanda `watch` će se zaustaviti i prikazati poruku na terminalu.
Slično tome, možete narediti komandi `watch` da prekine praćenje kada se izvrše neke promene u datoteci. Važno je napomenuti da kada koristite niz komandi pomoću `pipe` operatora (`|`), potrebno je da celu naredbu stavite unutar navodnika.
Praćenje aktivnosti u vašem Linux sistemu
Ako primetite da ponavljate isti proces, razmislite o korišćenju komande `watch` da biste ga automatizovali. Ovo će vas spasiti od čestog kucanja istih komandi kako biste videli šta se promenilo.
Takođe, komandu `watch` možete kombinovati sa drugim Linux komandama kako biste pratili sistemske resurse i aktivnosti, te nadgledali promene u datotekama ili direktorijumima.