Articles

Bash Nukkua Komento: pikaopas Käyttää Sitä omassa Skriptejä

Olemme haluavat yleensä skripti ajaa nopeasti, mutta se ei ole aina tapaus. Joskus on järkevää, että Bash-skriptimme käyttää unikomentoa ennen seuraavan komennon suorittamista. Otetaan selvää milloin …

mikä on Bash sleep-komento?

Bash sleep-komento viivästyttää komennon suorittamista sen jälkeen tietyn ajan. Uniaika ilmaistaan sekunteina. Käyttö sleep-komento on yhteinen, kun aikataulutus tehtävä, joka X sekunti tai silloin, kun käsikirjoitus perustuu toisen käsikirjoituksen loppuun sen toteuttamista.,

katsotaanpa kolme skenaarioita, joita käytetään sleep-komento:

  1. sen Sijaan, että käynnissä komennon välittömästi, haluat ajoittaa sen suorituksen X sekuntia tulevaisuudessa.
  2. ohjelma kestää kauan käsitellä joukko tiedostoja ja kun käsittely on valmis, se luo tiedoston osoittamaan, että. Voit kirjoittaa skripti, joka tarkistaa, jos tiedosto on olemassa, ja nukkuu tietyn ajan, jos se ei. Muutoin suorittaa seuraava vaihe prosessissa, joka perustuu tiedostoja syntyy ensimmäinen ohjelma.,
  3. soitat kolmannen osapuolen API ohjelmallisesti ja tiedät, että API ei salli yli 60 pyyntöjä per minuutti. Nukkumalla X sekuntia voit varmistaa, että et mene yli pyyntöjen määrä minuutissa sallittu API tarjoaja.

Let ’ s get started!,

Perus Syntaksin Bash Nukkua Komento

perus syntaksin nukkua komento Bash on hyvin yksinkertainen:

sleep <SECONDS>

Tässä on, mitä tapahtuu, jos ajaa sen komentoriviltä:

$ sleep 5$ 

tässä tapauksessa suorittamisen jälkeen nukkua 5-komento Linux palauttaa kuori takaisin jälkeen 5 sekuntia.

Ja nyt siirrytään kolmeen käytännön esimerkkiin siitä, miten Bash sleep-käsky toimii.,

Skenaario 1: Sleep Komento, joka viivästyttää Toteuttamista Toinen Komento Bash-Skripti

kirjoitan yksinkertainen Bash shell script näyttää tarkka käyttäytyminen sleep-komento.

– ottaen huomioon, että edellisen esimerkin voisi todella osoittaa, että sleep-komento palautti kuori takaisin jälkeen 5 sekuntia.

katsotaanpa kirjoittaa skripti, joka tekee, mitä olen selittänyt Skenaariossa 1, se viivästyttää täytäntöönpanoa komento X sekuntia (tässä tapauksessa 5 sekuntia).

Se on melkein kuin suorittamalla komento tiettyyn aikaan, seuraavat samaa periaatetta työtä mat.,

Joten, luoda hyvin yksinkertainen Bash script kutsutaan delay_cmd.sh:

#!/bin/bash datesleep 5dateuptime 

date-komento tulostaa nykyisen päivämäärän ennen ja jälkeen nukkua komento, tällä tavalla voit nähdä, että käsikirjoitus on keskeytetty 5 sekuntia.

5 sekunnin kuluttua uptime-komento suoritetaan.

käy järkeen?

teoriassa voimme kirjoittaa saman käsikirjoituksen yhdellä rivillä:

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

Tämä johtuu siitä, että puolipistettä käytetään Linux erottaa eri komentoja ja suorittaa ne peräkkäin.,

toisin sanoen Linux varmistaa, että jokainen komento on valmis ennen seuraavan suorittamista.

Skenaario 2: Bash-Skripti, joka Käyttää Nukkua Komento Odottaa Toisen Käsikirjoituksen Loppuun

tässä esimerkissä aion luoda kaksi skriptejä:

  1. program_1.sh: henkilömäärä 30 sekuntia ja sitten se luo tiedosto nimeltä stage1-turnaukseen.täydellinen. Tämä periaatteessa simuloi ohjelmaa, joka kestää kauan tietyn tehtävän suorittamiseen ja vahvistaa sen suorittamisen luomalla stage1.täydellinen tiedosto.
  2. program_2.sh: käyttää jonkin aikaa silmukka ja jokaisessa iteraatio tarkistaa, jos stage1.,täydellinen tiedosto on olemassa. Jos se ei nuku 6 sekuntia, jos tiedosto on olemassa, se tulostaa viestin ” File stage1.täydellinen on olemassa. Vaihe 1 valmis, alkaa Vaihe 2…”

Tässä on program_1.sh:

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

kosketa komento on käytössä ensimmäinen ohjelma luoda stage1-turnaukseen.täytä tiedosto 30 sekunnin kuluttua siitä, kun skripti suoritetaan.

Ja program_2.sh on seuraava, meidän tulee käyttää Bash, jos muu selvitys toteuttaa se:

toisella Bash shell script meillä on päättymättömään silmukkaan., Jokaisessa iteraatiossa skripti:

  • tarkistaa, jos tiedosto stage1.täydellinen on läsnä.
  • Jos tiedostoa ei ole olemassa se nukkuu 6 sekuntia
  • Jos tiedosto on olemassa, se poistaa stage1-turnaukseen.täytä tiedosto ja pysäyttää suorituksen Bash exit-komennolla.,

Ennen kuin se täyttää kaksi skriptejä, varmista, että ne ovat sekä suoritettavan käyttämällä chmod +x komento:

chmod +x program_*.sh

Joten, katsotaanpa ajaa skriptejä…

otamme program_1.sh ensimmäinen, me ajaa sen taustalla, niin että emme voi ajaa program_2.sh välittömästi sen jälkeen sama terminaali:

odotetusti toisen käsikirjoituksen nukkuu 6 sekunnin ajan, kunnes se havaitsee tiedoston stage1-turnaukseen.täydellinen tiedosto, ja sitten se pysäyttää sen suorittamisen.,

Skenaario 3: Sleep Komento Hallita Useita Puheluja Kolmannen Osapuolen API

Jos haluat soittaa API käyttäen Bash-skripti, voit käyttää curl-komennon.

Käyttämällä curl soittaa API on yksinkertainen, otetaan esimerkiksi seuraavia API-endpoint:

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

Meidän tulee kirjoittaa pieni Bash-skripti, joka käyttää curl suorittaa GET-pyynnön vastaan ja käyttää nukkua komento raja-API-kutsujen määrää tietyssä ajassa.

Tämä tehdään, jottei sovellusliittymän tarjoajan asettamia mahdollisia rajoituksia ylitetä.,

Tämä on käsikirjoituksen olen kirjoittanut:

Harvat asiat tästä käsikirjoituksesta:

  • LASKURI muuttuja käytetään laskea määrän API-kutsuja voidaan suorittaa ennen poistumista, kun silmukka.
  • curlia käytetään GET-pyyntöjen suorittamiseen API-päätepistettä vastaan.
  • jokaisen iteraation, kun silmukka me keskeyttää komentosarjan 10 sekuntia sleep-komento raja-API-kutsujen määrää yhden 10 sekunnin välein.
  • nostamme laskurin muuttujan aritmeettisella operaattorilla $ (()).,

Joten, suorittaa käsikirjoitus:

odotetusti kaksi API puhelut ovat teloitettiin ja sitten suorituksen, kun silmukka pysähtyy, koska muuttujan arvo LASKURI on 3.

Johtopäätös

olen näyttänyt sinulle erilaisia tapoja käyttää sleep-komentoa Bash-skripti.

ja samalla olen käsitellyt paljon erilaisia asioita:

  • juoksevat skriptit taustalla.
  • käyttäen aritmeettista operaattoria.
  • Infinite while loops.
  • Vastamuuttujat.
  • kutsuu API: ta kiharalla.
  • tiedostojen luominen ja poistaminen.,
  • asetetaan suoritettavat käyttöoikeudet bash-skripteille.
  • käyttää puolipistettä komentojen juoksemiseen peräkkäin.

toivon, että siinä on kaikki järkeä!

And you? Miten muuten käyttäisit unikäskyä Bashissa? 🙂

aiheeseen Liittyvät ILMAINEN Kurssi: Tulkita Bash Scripting