Situatie
Un administrator de sistem deseori are nevoie sa ruleze o comanda in mod repetat la anumite perioade de timp. Acest task se poate realiza folosind comenzi cron simple.
Cron este un job scheduler care permite executarea unor acțiuni la un moment dat în timp. Acțiunile sunt definite în general prin scripturi, și sunt rulate de cron la intervale regulate. Este folosit în principal pentru a administrarea sistemului, însă poate fi folosit și pentru activități generale precum conectarea la internet sau descărcarea emailurilor.
In cele mai multe din cazuri functioneaza, dar cea mai scurta perioada pe care o puteti folosi este de 1 minut ceea ce in cele mai multe cazuri este prea mult.
In acest articol, va voi arata o metoda simpla de scripting ce ajuta la monitorizarea unei comenzi anumece ruleaza in mod continuu, similar comenzii top (ce monitorizeaza in mod continuu procesele si gradul de utilizare a memoriei), din 3 in 3 secunde (by default).
Solutie
Pasi de urmat
Utilizarea comenzii watch
Watch este o comanda linux ce iti permite sa executi o comanda sau un program in mod periodic si in acelasi timp afiseaza si output-ul pe ecran. Ceea ce inseamna ca vei putea vedea output-ul in timp real. By default, watch re-executa comanda/programul la fiecare 2 secunde. Intervalul poate fi modificat dupa bunul plac.
Monitorizarea memoriei utilizatem
Watch este foarte simplu de folosit.
ex: watch free -m
Comanda de mai sus va verifica memoria libera si va reactualiza rezultatele comenzii free la fiecare 2 secunde.
Dupa cum se poate vedea avem in partea de sus a output-ului intervalul de timp actualizat, mai jos avem comanda ce este in executie si data si ora exacta. Daca doriti sa ascundeti header-ul puteti folosi optiunea -t.
Urmatoarea intrebare logica este cum se schimba intervalul de executie. Pentru acest lucru, putem folosi optiunea -n care specifica intervalul de executie. Acest interval este specificat in secunde.
Sa presupunem ca doriti sa executati un script script.sh la fiecare 10 secunde:
warch -n 10 script.sh
Alte optiuni utile:
-b – creaza un bunet daca output-ul comenzii este non-zero
-c – Interpreteaza secventa de culori ANSI
-d – evidentiaza schimbarile din output-ul comenzii
Monitorizare logged-on users, uptime, load average
Sa spunem ca vrem sa monitorizam utilizatorii logati, timpul de logare si incarcarea intr-un output continuu actualizat la fiecare x secunde. In acest caz vom folosi urmatoarea comanda:
watch uptime
Pentru a parasi secventa apasam CTRL+C
Monitorizarea progresului comenzii copy
In Linux, in timp ce se copiaza fisiere dintr-o locatie in alta, folosind comanda cp , progresul de copiere nu este afisat. pentru a putea vedea progresul de copiere putem folosi comanda watch impreuna cu du -s.
cp ubuntu-15.10-desktop-amd64.iso /home/Alin/ &
watch -n 0.1 du -s /home/Alin/ubuntu-15.10-desktop-amd64.iso
Utilizarea comenzii sleep
Sleep este deseori folosita pentru debug-ul scripturilor de shell, dar are multe alte utilitati deasemenea. De exemplu, in combinatie cu reetitivele for sau while, puteti obtine rezultate deosebite.
In esenta sleep este folosita pentru a intarzia ceva pentru o perioada anume. In scripturi, o puteti folosi pentru a face scriptul sa ruleze comanda 1, sa astepte x secunde dupa care sa ruleze comanda 2.
Cu repetitivele de mai sus puteti spune bash-ului sa ruleze o comanda, sleep pentru N secunde dupa care sa ruleze comanda din nou.
for i in {1..10}; do echo -n “This is a test in loop $i “; date ; sleep 5; done
Afiseaza:
This is a test in loop 1 Mon Apr 11 14:49:47 EET 2016
This is a test in loop 2 Mon Apr 11 14:49:52 EET 2016
This is a test in loop 3 Mon Apr 11 14:49:57 EET 2016
This is a test in loop 4 Mon Apr 11 14:50:02 EET 2016
This is a test in loop 5 Mon Apr 11 14:50:07 EET 2016
Leave A Comment?