În anumite situații, este necesar să executați în mod repetat o comandă sau un script pentru a urmări diferite aspecte ale sistemului dumneavoastră, cum ar fi procesele active, utilizarea spațiului de stocare sau autentificarea utilizatorilor. Comanda Linux watch
vă oferă posibilitatea de a automatiza aceste operațiuni, eliminând necesitatea de a le rula manual de fiecare dată.
Această comandă vă permite să supravegheați activitatea sistemului în timp real, inclusiv autentificările utilizatorilor, starea rețelei, utilizarea memoriei și a procesorului, spațiul disponibil pe disc, etc. Haideți să analizăm cum se utilizează comanda watch
în Linux.
Ce reprezintă comanda Watch?
Comanda watch
din Linux este folosită pentru a rula o comandă specificată sau un program în mod repetat, la intervale regulate, afișând rezultatul direct în terminal. Acest mecanism vă oferă posibilitatea de a observa modificările în ieșire în timp real. Comanda actualizează informațiile afișate la fiecare interval, înlocuind ieșirea anterioară cu cea curentă. În mod implicit, comanda se repetă la fiecare două secunde și continuă să ruleze până când este oprită manual prin apăsarea combinației de taste Ctrl + C.
Sintaxa comenzii watch
Structura comenzii watch
este următoarea:
watch opțiuni <comandă>
Există diverse opțiuni disponibile pentru a fi utilizate cu comanda watch
. Dacă executați comanda watch
fără a specifica opțiuni, aceasta va rula comanda specificată la fiecare două secunde. De exemplu, următorul cod va afișa rezultatul comenzii ls
:
watch ls -l ~/
Rezultatul va indica modificările din lista de directoare, în cazul în care un fișier este creat, șters sau modificat în dimensiune, actualizând informația afișată la fiecare două secunde.
Executarea unei comenzi la intervale de X secunde cu watch
Puteți personaliza intervalul de actualizare al comenzii watch
. Aceasta înseamnă că puteți seta comanda watch
să aștepte un număr specific de secunde înainte de a repeta execuția comenzii. Pentru a schimba intervalul de actualizare, utilizați opțiunea -n
, urmată de intervalul dorit exprimat în secunde.
watch -n
De exemplu, pentru a rula o comandă la fiecare 5 secunde, utilizați:
watch -n 5 <comandă>
Evidențierea modificărilor între actualizări
Comanda watch
înlocuiește rezultatul afișat la fiecare actualizare. Folosind opțiunea -d
, aveți, de asemenea, posibilitatea de a evidenția modificările apărute între ieșirea anterioară și cea curentă.
watch -d
Eliminarea antetului din ieșirea comenzii watch
Implicit, comanda watch
afișează un antet în partea superioară a fiecărei ieșiri. Acest antet conține informații precum intervalul de actualizare, numele comenzii și data și ora curentă a sistemului. Pentru a elimina antetul din ieșire, utilizați opțiunea -t
:
watch -t <comandă>
Emiterea de semnale sonore în caz de eroare
Atunci când un proces Linux își încheie execuția, acesta returnează un cod de ieșire. Prin convenție, valoarea 0 indică succesul, în timp ce o valoare diferită de zero semnalează o eroare. Opțiunea -b
a comenzii watch
emite un semnal sonor dacă comanda returnează o ieșire cu o valoare diferită de zero.
Să presupunem că doriți să monitorizați serviciul sshd.service
și să fiți notificat în momentul în care acesta se oprește; ați folosi:
watch -b sudo systemctl status sshd.service
Această comandă va genera semnale sonore în momentul în care serviciul se oprește. Semnalul sonor se va opri la repornirea serviciului. Pentru a testa această funcționalitate, deschideți o altă fereastră de terminal și opriți serviciul. Această acțiune va declanșa semnale sonore continue până la repornirea serviciului. Pentru a utiliza această facilitate, este necesar să aveți instalat pachetul beep
pe sistemul dumneavoastră.
Încheierea execuției comenzii watch la modificarea ieșirii
De asemenea, aveți opțiunea de a instrui comanda watch
să se oprească și să iasă din execuție atunci când ieșirea comenzii suferă modificări. Acest lucru se poate realiza folosind opțiunea -g
. Această opțiune este deosebit de utilă în scenariile în care se așteaptă anumite modificări în rezultatul comenzii.
Imediat ce ieșirea se modifică, comanda watch
se va opri. Puteți combina această opțiune cu comanda echo
pentru a afișa un mesaj pe ecran.
De exemplu, să analizăm un scenariu în care așteptați sosirea unui fișier într-un director. Următoarea comandă va monitoriza directorul respectiv pentru prezența fișierului specificat. De îndată ce fișierul sosește, comanda watch
va înceta să mai ruleze și se va afișa mesajul „fișier sosit” în terminal.
watch -g "ls -l | grep nume_fisier" && echo "fișier sosit"
Un alt exemplu util este o notificare în cazul în care un anumit utilizator se conectează la sistemul dumneavoastră:
watch -g "who | grep nume_utilizator" && echo "nume_utilizator conectat"
Această comandă va monitoriza rezultatul comenzii who
, care listează utilizatorii conectați. Odată ce utilizatorul specificat se conectează, comanda watch
se va opri și va afișa un mesaj în terminal.
Similar, puteți instrui comanda watch
să oprească un serviciu în momentul în care apar anumite modificări într-un fișier. Rețineți că, atunci când folosiți un lanț de comenzi legate prin pipe, va fi necesar să includeți întreaga comandă între ghilimele.
Monitorizarea activităților în sistemul dumneavoastră Linux
Dacă executați în mod repetat aceeași secvență de pași, luați în considerare utilizarea comenzii watch
pentru a automatiza procesul. Aceasta vă scutește de necesitatea de a tasta frecvent comenzi, doar pentru a verifica modificările.
De asemenea, puteți utiliza comanda watch
în combinație cu alte comenzi Linux, pentru a monitoriza resursele și activitățile sistemului și a urmări modificările din fișiere sau directoare.