Articles

Bash Sleep Command: un ghid rapid pentru a-l folosi în scripturile dvs.

de obicei dorim ca un script să ruleze rapid, dar acest lucru nu este întotdeauna cazul. Uneori are sens ca scriptul nostru Bash să folosească comanda sleep înainte de a executa următoarea comandă. Să aflăm când …

care este comanda Bash sleep?

comanda Bash sleep întârzie executarea comenzii după aceasta pentru o anumită perioadă de timp. Timpul de somn este exprimat în secunde. Utilizarea comenzii sleep este obișnuită atunci când planificați o sarcină la fiecare X secunde sau când un script se bazează pe un alt script pentru a-și finaliza execuția.,

să ne uităm la trei scenarii în care ați folosi comanda sleep:

  1. În loc să executați imediat o comandă, doriți să programați execuția acesteia x secunde în viitor.
  2. un program durează mult timp pentru a procesa un set de fișiere și atunci când procesarea este completă generează un fișier pentru a indica faptul că. Puteți scrie un script care verifică dacă fișierul există și doarme pentru o anumită perioadă de timp, dacă nu. altfel execută următorul pas al procesului bazat pe fișierele generate de primul program.,
  3. apelați un API terț programatic și știți că API-ul nu permite mai mult de 60 de solicitări pe minut. Somnul timp de X secunde vă permite să vă asigurați că nu treceți peste numărul de solicitări pe minut permise de furnizorul API.

Să începem!,

Sintaxa de Bază a Bash Somn Comanda

sintaxa de bază de somn comandă în Bash este foarte simplu:

sleep <SECONDS>

Aici este ce se întâmplă dacă tu a alerga în linie de comandă:

$ sleep 5$ 

În acest caz, după executarea somn 5 comandă Linux se întoarce din nou shell, după 5 secunde.și acum să trecem la trei exemple practice despre cum să vă comanda Bash sleep.,

Scenariul 1: Comanda Sleep care întârzie executarea unei alte comenzi într-un Script Bash

voi scrie un script Bash shell simplu pentru a arăta comportamentul exact al comenzii sleep…

…având în vedere că exemplul anterior nu a putut arăta cu adevărat că comanda sleep a returnat shell-ul după 5 secunde.

să scriem un script care face ceea ce am explicat în scenariul 1, întârzie executarea unei comenzi cu X secunde (în acest caz 5 secunde).

este aproape ca și cum ai executa o comandă la un anumit moment, urmând același principiu al programatorilor de locuri de muncă.,

Deci, de a crea o foarte simplu Bash shell script numit delay_cmd.sh:

#!/bin/bash datesleep 5dateuptime 

La data de comandă este utilizat pentru a imprima data curentă înainte și după somn de comandă, în acest fel, puteți vedea că script-ul este suspendat pentru 5 secunde.

după 5 secunde comanda uptime este executată.

are sens?

În teorie putem scrie la fel de script într-o singură linie:

#!/bin/bash date; sleep 5; date; uptime 

Acest lucru este pentru că virgula este folosit în Linux pentru a separa diferite comenzi și le executa secvențial.,cu alte cuvinte, Linux se asigură că fiecare comandă se finalizează înainte de a o executa pe următoarea.

scenariul 2: script Bash care folosește comanda Sleep pentru a aștepta finalizarea unui alt Script

În acest exemplu voi crea două scripturi:

  1. program_1.sh: doarme timp de 30 de secunde și apoi creează un fișier numit stage1.complet. Aceasta simulează practic un program care durează mult timp pentru a finaliza o sarcină specifică și confirmă finalizarea execuției sale prin crearea etapei1.fișier complet.
  2. program_2.sh: utilizează o buclă de timp și la fiecare iterație verifică dacă stage1.,fișierul complet există. În cazul în care nu doarme timp de 6 secunde, în cazul în care fișierul există se imprimă mesajul „File stage1.există complet. Etapa 1 completă, începând Etapa 2…”.

Aici este program_1.sh:

#!/bin/bash sleep 30touch stage1.complete 

comanda tactil este folosit de primul program pentru a crea stage1.fișier complet după 30 de secunde din momentul în care scriptul este executat.

și program_2.sh este următoarea, vom folosi o declarație Bash if else pentru ao implementa:

în al doilea script Bash shell avem o buclă infinită., La fiecare iterație scriptul:

  • verifică dacă fișierul stage1.complet este prezent.
  • Dacă fișierul nu există, acesta doarme timp de 6 secunde
  • dacă fișierul există, elimină stage1.completați fișierul și oprește execuția folosind comanda de ieșire Bash.,

Înainte de a executa două script-uri, asigurați-vă că ambele sunt executabil folosind chmod +x comanda:

chmod +x program_*.sh

Deci, haideți să rula script-uri…

Vom rula program_1.sh în primul rând, vom rula în fundal, astfel încât să putem rula program_2.sh imediat după aceea, în același terminal:

Cum era de așteptat cel de-al doilea scenariu ține de dormit pentru 6 secunde până când se găsește fișierul stage1.fișier complet,și apoi se oprește executarea.,

scenariul 3: comanda Sleep pentru a controla numărul de apeluri către un API terț

Dacă doriți să apelați un API folosind un script Bash, puteți utiliza comanda curl.

Folosind curl pentru a apela un API este simplu, să luăm, de exemplu, următoarele endpoint API:

https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22 

Vom scrie un script Bash care foloseste curl pentru a efectua o cerere împotriva sa și utilizează somn comandă pentru a limita numărul de apeluri API într-o anumită perioadă de timp.acest lucru este făcut pentru a evita depășirea oricăror limite potențiale impuse de furnizorul API.,

acesta este scriptul pe care l-am scris:

câteva lucruri despre acest script:

  • variabila COUNTER este utilizată pentru a număra numărul de apeluri API care trebuie executate înainte de a ieși din bucla while.
  • cURL este utilizat pentru a efectua cererile GET împotriva punctului final API.
  • la fiecare iterație a buclei while suspendăm scriptul timp de 10 secunde cu comanda sleep pentru a limita numărul de apeluri API la unul la fiecare 10 secunde.
  • incrementăm variabila contorului folosind operatorul aritmetic $ (()).,deci, executați scriptul:

    așa cum era de așteptat, două apeluri API sunt executate și apoi execuția buclei while se oprește deoarece valoarea contorului variabilei este 3.

    concluzie

    v-am arătat diferite moduri de a utiliza comanda sleep într-un script Bash.și în acest proces am acoperit o mulțime de lucruri diferite:

    • rularea scripturilor în fundal.
    • folosind operatorul aritmetic.
    • infinit în timp ce bucle.
    • variabile contra.
    • apelarea unui API folosind curl.
    • crearea și eliminarea fișierelor.,
    • setarea permisiunilor executabile pentru scripturile Bash.
    • folosind punct și virgulă pentru a rula comenzi secvențial.

    sper că are sens!

    și tu? Cum altfel ai folosi comanda de somn în Bash? cursul gratuit: descifrarea Bash Scripting