Kako pokrenuti ili ponoviti Linux naredbu zauvijek svakih X sekundi


Administrator sustava često treba izvoditi naredbu više puta u određenom vremenskom razdoblju. Često se takvi zadaci mogu lako izvršiti jednostavnim cron naredbama. U većini slučajeva to bi trebalo raditi, ali najkraće razdoblje koje možete pokrenuti cron naredba je svake 1 minute. Vjerovali ili ne, u mnogim slučajevima to je presporo.

U ovom ćete uputstvu naučiti jednostavne tehnike skriptiranja kako biste nadgledali ili pripazili na određenu naredbu u neprekidnom stanju slično naredbi vrh (kontinuirano nadgledajte proces i korištenje memorije) svake 3 sekunde prema zadanim postavkama.

Nećemo se zaustaviti kako bismo razgovarali o razlozima zašto biste ovo često trebali pokretati naredbe. Vjerujem da svi imaju različite razloge za to u svojim svakodnevnim poslovima ili čak kod kućnih računala i prijenosnih računala.

1. Upotrijebite sat naredbu

Watch je Linux naredba koja vam omogućuje povremeno izvršavanje naredbe ili programa i također prikazuje izlaz na zaslonu. To znači da ćete na vrijeme moći vidjeti izlaz programa. Prema zadanim postavkama sat ponovno pokreće naredbu/program svake 2 sekunde. Interval se lako može prilagoditi vašim potrebama.

"Watch" je izuzetno jednostavan za upotrebu, da biste ga testirali, možete odmah pokrenuti Linux terminal i upisati sljedeću naredbu:

# watch free -m

Gornja naredba provjerit će slobodnu memoriju vašeg sustava i ažurirati rezultate besplatne naredbe svake dvije sekunde.

Kao što se vidi prema gornjem izlazu, imate zaglavlje koje prikazuje informacije o (s lijeva na desno) intervalu ažuriranja, naredbi koja se izvršava i trenutnom vremenu. Ako želite sakriti ovo zaglavlje, možete upotrijebiti opciju -t .

Sljedeće je logično pitanje - kako promijeniti interval izvršenja. U tu svrhu možete koristiti opciju -n koja određuje interval s kojim će se naredba izvršiti. Taj je interval naveden u sekundama. Recimo da želite pokrenuti datoteku script.sh svakih 10 sekundi, možete to učiniti ovako:

# watch -n 10 script.sh

Imajte na umu da ako pokrenete naredbu kao što je prikazano gore, morat ćete cd otići u direktorij (naučite Primjeri naredbi Learn 15 cd) u kojem se skripta nalazi ili na neki drugi način navesti puni put do te skripte.

Ostale korisne opcije naredbe za gledanje su:

  1. -b - stvara zvučni signal ako izlaz naredbe nije nula.
  2. -c - Tumači ANSI sekvence boja.
  3. -d - ističe promjene u izlazu naredbe.

Recimo da želite pratiti prijavljene korisnike, vrijeme rada poslužitelja i učitavati prosječni izlaz u kontinuiranoj fazi svakih nekoliko sekundi, a zatim upotrijebite sljedeću naredbu kao što je prikazano:

# watch uptime

Da biste izašli iz naredbe, pritisnite CTRL + C .

Ovdje će se pokrenuti naredba uptime i prema zadanim postavkama prikazivat će ažurirane rezultate svake 2 sekunde.

U Linuxu, dok kopirate datoteke s jednog mjesta na drugo pomoću naredbe cp , napredak podataka nije prikazan, da biste vidjeli napredak podataka koji se kopiraju, možete koristiti watch naredba zajedno s naredbom du -s za provjeru upotrebe diska u stvarnom vremenu.

# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ &
# watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso 

Ako mislite da je gornji postupak previše kompliciran za postizanje, predlažem vam da odaberete naredbu Advance copy koja prikazuje napredak podataka tijekom kopiranja.

2. Koristite naredbu za spavanje

Spavanje se često koristi za otklanjanje pogrešaka u skriptama ljuske, ali ima i mnoge druge korisne svrhe. Na primjer, u kombinaciji s petljama for ili while možete dobiti prilično sjajne rezultate.

Ako ste novi u bash skriptiranju, ovdje možete provjeriti naš vodič o bash petljama.

U slučaju da prvi put čujete za naredbu "sleep" , ona se koristi za odgađanje nečega određeno vrijeme. U skriptama ga možete koristiti da naredite skripti da izvrši naredbu 1, pričekajte 10 sekundi, a zatim pokrenite naredbu 2.

S gornjim petljama možete Bashu reći da izvrši naredbu, prespava N količinu sekundi i zatim ponovo izvrši naredbu.

Ispod možete vidjeti primjere obje petlje:

# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

Gornja linija će pokrenuti naredbu echo i prikazati trenutni datum, ukupno 10 puta, s 5 sekundi mirovanja između izvršavanja.

Evo primjera rezultata:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Naredbe eha i datuma možete promijeniti vlastitim naredbama ili skriptom i promijeniti interval spavanja prema vašim potrebama.

# while true; do echo -n "This is a test of while loop";date ; sleep 5; done

Evo uzorka rezultata:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

Gornja naredba će se izvoditi dok je korisnik ne ubije ili prekine. Može vam dobro doći ako trebate pokrenuti naredbu koja se izvodi u pozadini, a ne želite računati na cron.

Važno: Kada koristite gornje metode, toplo se preporučuje da interval postavite dovoljno dugo da zadrži dovoljno vremena da vaša naredba završi s radom, prije sljedećeg izvršavanja.

Zaključak

Uzorci u ovom vodiču su korisni, ali nisu namijenjeni u potpunosti zamjeni korisnog programa cron. Na vama je da pronađete koja vam više odgovara, ali ako moramo odvojiti upotrebu obje tehnike, rekao bih ovo:

  1. Koristite cron kad trebate povremeno izvoditi naredbe čak i nakon ponovnog pokretanja sustava.
  2. Upotrijebite metode objašnjene u ovom vodiču za programe/skripte za koje je predviđeno da se izvode u trenutnoj korisničkoj sesiji.

Kao i uvijek ako imate bilo kakvih pitanja ili komentara, ne ustručavajte se poslati ih u odjeljku za komentare u nastavku.