Comanda `sleep` are ca scop principal inducerea unei pauze în activitatea computerului tău Linux. Deși poate părea contraintuitiv, uneori un moment de inactivitate este exact ceea ce se impune. Acest ghid detaliază cum poți valorifica eficient comanda `sleep` în shell-ul Bash.
Utilizarea comenzii `sleep` este foarte simplă. În linia de comandă, scrie `sleep`, lasă un spațiu, introdu un număr și apasă Enter.
sleep 5
Cursorul va dispărea pentru cinci secunde, după care va reveni. Ce s-a întâmplat? Atunci când folosești `sleep` în linia de comandă, îi dai instrucțiuni lui Bash să suspende execuția procesului pentru intervalul specificat. În exemplul anterior, am folosit cinci secunde.
Duratele pentru `sleep` pot fi specificate în zile, ore, minute și secunde. Pentru a face acest lucru, adaugă un sufix `d`, `h`, `m` sau `s` la valoarea duratei. De exemplu, pentru a opri execuția timp de o zi, patru ore, șapte minute și cinci secunde, comanda ar arăta astfel:
sleep 1d 4h 7m 5s
Sufixul `s` (pentru secunde) este opțional. Dacă nu specifici niciun sufix, `sleep` va considera orice durată ca fiind exprimată în secunde. Să presupunem că vrei o pauză de somn de cinci minute și douăzeci de secunde. Formatul corect al comenzii este:
sleep 5m 20
Dacă uiți să adaugi sufixul `m` pentru minute, `sleep` va înțelege că dorești o pauză de cinci secunde și apoi încă una de douăzeci de secunde. Prin urmare, execuția va fi oprită pentru un total de 25 de secunde.
Deși multe comenzi necesită o ordine precisă a parametrilor, `sleep` este foarte flexibilă. Parametrii pot fi introduși în orice ordine, iar `sleep` îi va înțelege corect. În plus, poți folosi și numere cu virgulă mobilă. De exemplu, `0.5h` este o modalitate validă de a indica o pauză de o jumătate de oră.
Următoarele comenzi (în ordine crescătoare de excentricitate) au ca efect o pauză de 10 secunde:
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
Utilizarea comenzii `sleep` pentru a temporiza o comandă
Comanda `sleep` poate fi folosită pentru a introduce o pauză înainte de executarea unei alte comenzi. Comanda de mai jos va aștepta 15 secunde și apoi va emite un semnal sonor.
sleep 15 && echo -en ' 07'
Utilizarea `sleep` pentru a introduce pauze între două comenzi
Poți folosi `sleep` pentru a crea o pauză între execuția a două comenzi. Comanda de mai jos va afișa fișierele din directorul tău „Documents”, va aștepta cinci secunde și apoi va schimba directorul curent cu directorul principal:
ls -R ~/Documents && sleep 5 && cd ~
Utilizarea comenzii `sleep` pentru a întrerupe un script
În scripturile shell, comanda `sleep` poate fi utilizată pentru a suspenda execuția scriptului pentru o durată determinată. Această tehnică este utilă, de obicei, pentru a acorda unui proces timp suficient să se finalizeze înainte ca scriptul să-și continue execuția. De asemenea, `sleep` poate fi folosit pentru a limita frecvența solicitărilor pe care un script le trimite către o altă resursă.
Pentru a ilustra acest lucru, iată un script care interacționează cu un serviciu web Google folosind `curl`. Când întrebi serviciul web cu numărul ISBN al unei cărți, acesta răspunde cu un set de date JSON. Datele pot fi analizate cu utilitarul `jq` pentru a extrage titlul cărții. Pentru a evita suprasolicitarea serviciului web, scriptul așteaptă o secundă între fiecare solicitare.
Creează un fișier cu următorul text și salvează-l sub numele `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."
Introdu următoarea comandă pentru a seta permisiunile de execuție și a face scriptul executabil.
chmod +x check_book.sh
Scriptul necesită utilitarele `curl` și `jq`. Instalează aceste pachete folosind `apt-get` dacă utilizezi Ubuntu sau o altă distribuție bazată pe Debian. Pe alte distribuții Linux, folosește instrumentul de gestionare a pachetelor al distribuției tale.
sudo apt-get install curl
sudo apt-get install jq
Creează un fișier text cu următoarele numere și salvează-l ca `books.txt`.
9781565921276 9781874416685 9781565921672 9780521431088 9781491941591
Rulează scriptul `check_book.sh`, introducând fișierul `books.txt` ca parametru.
./check_book.sh books.txt
Solicitările către serviciul web Google sunt trimise la intervale de o secundă. Titlul cărții va apărea la scurt timp după ce fiecare număr ISBN este interogat.
Acesta este totul despre utilizarea comenzii `sleep`. Detaliile de funcționare internă ale scriptului `check_book.sh` depășesc sfera acestui ghid. Scriptul a fost ales doar ca exemplu relevant pentru utilizarea comenzii `sleep`. Dacă dorești să afli mai multe despre componentele principale ale scriptului, poți consulta pagina proiectului `curl` și manualul online `jq`.