Cum să întrerupeți un script Bash cu comanda Linux Sleep

Comanda sleep face ca computerul dumneavoastră Linux să nu facă nimic. Poate contra-intuitiv, dar o perioadă de inactivitate este uneori exact ceea ce este necesar. Acest articol vă arată cum să utilizați eficient această comandă shell Bash.

Utilizarea somnului este ușoară. Pe linia de comandă tastați sleep, un spațiu, un număr, apoi apăsați Enter.

sleep 5

Cursorul va dispărea timp de cinci secunde și apoi va reveni. Ce s-a întâmplat? Utilizarea somnului pe linia de comandă îi indică lui Bash să suspende procesarea pe durata pe care ați furnizat-o. În exemplul nostru, aceasta a fost de cinci secunde.

Putem trece durate pentru a dormi în zile, ore și minute, precum și în secunde. Pentru a face acest lucru, includeți un sufix fie d, h, m sau s cu durata. Pentru a determina somnul să se întrerupă pentru o zi, patru ore, șapte minute și cinci secunde, utilizați o comandă ca aceasta:

sleep 1d 4h 7m 5s

Sufixul s (pentru secunde) este opțional. Fără sufix, somnul va trata orice durată ca secunde. Să presupunem că vrei să ai o pauză de somn de cinci minute și douăzeci de secunde. Un format corect al acestei comenzi este:

sleep 5m 20

Dacă uitați să furnizați sufixul m pentru durata minutelor, veți instrui somnul să facă pauză timp de cinci secunde și apoi din nou timp de douăzeci de secunde. Deci somnul se va opri timp de 25 de secunde.

Multe comenzi vă cer să furnizați parametrii într-o anumită ordine, dar somnul este foarte îngăduitor. Le puteți oferi în orice ordine și somnul va avea sens din ele. De asemenea, puteți furniza un număr în virgulă mobilă ca parametru. De exemplu, 0,5 ore este o modalitate validă de a indica că doriți ca somnul să se întrerupă timp de o jumătate de oră.

  Cum să găsiți adresa IP a routerului dvs. pe Windows, Linux, Android etc.

Toate comenzile următoare (din ce în ce mai excentrice) indică somnului să se oprească timp de 10 secunde.

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

Utilizarea Sleep pentru a face pauză înainte de o comandă

Comanda sleep poate fi folosită pentru a da o pauză înainte de executarea unei comenzi. Această comandă s-ar opri timp de 15 secunde și apoi va emite un semnal sonor.

sleep 15 && echo -en ' 07'

Utilizarea Sleep pentru a face pauză între două comenzi

Puteți folosi sleep pentru a face o pauză între două comenzi. Această comandă ar lista fișierele din directorul dvs. Documente, va întrerupe cinci secunde și apoi va schimba directorul de lucru curent în directorul dvs. de pornire:

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

Utilizarea Sleep pentru a întrerupe execuția unui script

Puteți folosi comanda sleep în scripturile shell pentru a întrerupe execuția scriptului pentru o perioadă precisă de timp. De obicei, ați face acest lucru pentru a permite unui proces suficient timp pentru a se finaliza înainte ca scriptul să-și continue procesarea. De asemenea, îl puteți folosi pentru a limita cererile pe care le face un script către o altă resursă.

Pentru a demonstra exact acest lucru, iată un script care apelează la un serviciu web Google folosind curl. Când interogați serviciul web cu ISBN numărul unei cărți, acesta răspunde cu un dump de date JSON privind acea carte. Putem analiza acele date trecându-le prin utilitarul jq pentru a prelua titlul cărții. Pentru ca scriptul să nu streseze serviciul web, acesta doarme o secundă între solicitări web.

  Cum să instalați OnlyOffice 6.3 pe computerul dvs. Linux

Creați un fișier care să conțină următorul text și salvați-l ca 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."

Tastați următoarea comandă pentru a seta permisiunile de execuție și pentru a face scriptul executabil.

chmod +x check_book.sh

Scriptul necesită utilitățile curl și jq. Utilizați apt-get pentru a instala aceste pachete pe sistemul dvs. dacă utilizați Ubuntu sau o altă distribuție bazată pe Debian. Pe alte distribuții Linux, utilizați instrumentul de gestionare a pachetelor din distribuția dvs. Linux.

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

Creați un fișier text care să conțină următoarele numere și salvați-l ca books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Rulați scriptul check_book.sh și introduceți fișierul books.txt ca parametru.

./check_book.sh books.txt

Solicitările se fac către serviciul web Google la intervale de o secundă. Titlul cărții va apărea la scurt timp după ce fiecare număr ISBN este interogat.

Asta e tot ce este de dormit. Funcționarea interioară a scriptului check_book.sh depășește scopul acestui articol. Scriptul a fost ales doar pentru a ilustra o utilizare validă a comenzii sleep. Dacă doriți să citiți mai multe despre cele două componente principale ale scriptului, consultați curl pagina proiectului iar jq manual on-line.