Како паузирати Басх скрипту помоћу Линук команде за спавање

Komanda sleep je korisna alatka koja omogućava pauziranje izvršavanja procesa u Linux okruženju. Iako se čini da privremena neaktivnost ne doprinosi mnogo, ona može biti ključna za efikasno upravljanje skriptama i procesima. Ovaj članak objašnjava kako koristiti sleep komandu u Bash-u.

Korišćenje komande sleep je vrlo jednostavno. U terminal ukucajte sleep, razmak, broj i pritisnite Enter. Na primer:

sleep 5

Kursor će nestati na pet sekundi, a zatim će se ponovo pojaviti. Šta se zapravo desilo? Kada koristite sleep u komandnoj liniji, Bash obustavlja dalju obradu na određeno vreme koje ste naveli. U navedenom primeru, pauza je trajala pet sekundi.

Vreme pauze se može definisati u danima, satima, minutama, kao i u sekundama. Da biste to uradili, dodajte sufiks d, h, m ili s na broj. Na primer, za pauzu od jednog dana, četiri sata, sedam minuta i pet sekundi, koristite:

sleep 1d 4h 7m 5s

Sufiks s (za sekunde) nije obavezan. Ako ne navedete sufiks, sleep će svaki broj tretirati kao broj sekundi. Na primer, ako želite pauzu od pet minuta i dvadeset sekundi, jedna ispravna komanda bi bila:

sleep 5m 20

Ukoliko zaboravite da navedete sufiks m za minute, komanda sleep će prvo pauzirati pet sekundi, a zatim još dvadeset sekundi, što ukupno čini pauzu od 25 sekundi.

Iako mnoge komande zahtevaju da se parametri unose po tačno određenom redosledu, sleep je prilično fleksibilna. Parametre možete navesti bilo kojim redosledom i sleep će ih pravilno protumačiti. Takođe je moguće koristiti broj sa decimalnom tačkom kao parametar. Na primer, 0.5h je validan način da se odredi pauza od pola sata.

Sve sledeće komande (koje su sve „neobičnije“ napisane) će rezultirati pauzom od 10 sekundi:

sleep 10
sleep 5 5s
sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m

Pauziranje pre izvršenja komande

Komanda sleep se može koristiti za pravljenje pauze pre izvršavanja druge komande. Na primer, sledeća komanda će pauzirati 15 sekundi, a zatim će se oglasiti zvučni signal:

sleep 15 && echo -en ' 07'

Pauziranje između dve komande

sleep se takođe može koristiti za pauziranje između dve komande. Sledeća komanda će prikazati datoteke u direktorijumu „Documents“, pauzirati pet sekundi, a zatim će promeniti trenutni direktorijum u kućni direktorijum:

ls -R ~/Documents && sleep 5 && cd ~

Upotreba u skriptama za pauziranje izvršavanja

Komanda sleep se često koristi u skriptama kako bi se obezbedilo da skripta pauzira izvršavanje na određeno vreme. To se obično radi da bi se nekom procesu dalo dovoljno vremena da se završi pre nego što skripta nastavi sa izvršavanjem. Takođe se može koristiti za kontrolu brzine zahteva koje skripta šalje nekom drugom resursu.

Da bismo ovo ilustrovali, pogledajmo skriptu koja koristi curl za pristup Google veb servisu. Kada uputite zahtev veb servisu sa ISBN brojem knjige, servis odgovara sa JSON podacima o knjizi. Te podatke možemo analizirati pomoću jq kako bismo dobili naslov knjige. Da bi se izbeglo preopterećenje veb servisa, skripta pauzira jednu sekundu između svakog zahteva.

Napravite fajl sa sledećim sadržajem i sačuvajte ga kao check_book.sh:

#!/bin/bash
for book in `cat $1`
do
 echo $book":"
 curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title'
 echo ""
 sleep 1
done
echo "All done."

Unesite sledeću komandu da biste postavili dozvole za izvršavanje i učinili skriptu izvršnom:

chmod +x check_book.sh

Skripta zahteva curl i jq. Koristite apt-get da instalirate ove pakete ako koristite Ubuntu ili neku drugu Debian-zasnovanu distribuciju. U drugim Linux distribucijama koristite alatku za upravljanje paketima specifičnu za tu distribuciju.

sudo apt-get install curl
sudo apt-get install jq

Kreirajte tekstualni fajl sa sledećim brojevima i sačuvajte ga kao books.txt:

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Pokrenite skriptu check_book.sh i unesite fajl books.txt kao parametar:

./check_book.sh books.txt

Zahtevi se šalju Google veb servisu u intervalima od jedne sekunde. Naslov knjige se pojavljuje ubrzo nakon što se uputi zahtev za svaki ISBN broj.

Ovo je sve o komandi sleep. Detaljna analiza rada skripte check_book.sh prevazilazi okvire ovog članka. Skripta je izabrana samo da bi se ilustrovala validna upotreba sleep komande. Za više informacija o curl i jq alatkama, posetite njihove zvanične stranice projekta i onlajn priručnike.