Articles

Bash Sove Kommando: En Kjapp Guide til å Bruke Det i Din Skript

Vi vanligvis vil et skript for å kjøre fort, men det er ikke alltid tilfelle. Noen ganger er det fornuftig for våre Bash-script for å bruke sleep-kommandoen før du utfører neste kommando. La oss finne ut når det…

Hva er Bash sove kommando?

Bash sove kommando forsinkelser kjøring av kommandoen etter at det for en gitt tidsperiode. Hviletid er uttrykt i sekunder. Bruk av sove-kommandoen er vanlig når planlegge en oppgave hver X sekunder, eller når et skript er avhengig av en annen script for å fullføre sin kjøring.,

La oss se på tre scenarier som du ville bruke sleep-kommandoen:

  1. i Stedet for å kjøre en kommando umiddelbart, du vil planlegge gjennomføringen X sekunder i fremtiden.
  2. Et program tar lang tid å behandle et sett av filer og når behandlingen er fullført den lager en fil for å indikere at. Du kan skrive et skript som sjekker om at filen finnes, og sover for en viss periode av tid, hvis det er det ikke. Ellers utføres det neste trinn i prosessen basert på filer generert av det første programmet.,
  3. Du ringer til en tredjepart API programmatisk, og du vet at API tillater ikke mer enn 60 forespørsler per minutt. Sover for X sekunder kan du sørge for at du ikke går over antall forespørsler per minutt tillatt av API-leverandør.

La oss komme i gang!,

Grunnleggende Syntaksen for Bash Sove Kommandoen

Den grunnleggende syntaksen av søvn-kommandoen i Bash er veldig enkel:

sleep <SECONDS>

Her er hva som skjer hvis du kjører det på kommandolinjen:

$ sleep 5$ 

I denne saken etter at du har utført søvn 5 Linux-kommandoen returnerer skallet tilbake etter 5 sekunder.

la oss nå flytte til tre praktiske eksempler på hvordan du Bash sove kommando.,

Scenario 1: Søvn Kommando som Forsinker Utførelsen av en Annen Kommando i et Bash-Script

jeg vil skrive en enkel Bash-skall-skript for å vise nøyaktig oppførsel sove kommando…

…med tanke på at den forrige eksempel ikke kunne virkelig vise at søvn kommandoen tilbake skallet tilbake etter 5 sekunder.

La oss skrive et skript som gjør det som jeg har forklart i Scenario 1, det forsinker utførelsen av et kommando av X sekunder (i dette tilfellet 5 sekunder).

Det er nesten som å kjøre en kommando på et bestemt tidspunkt etter samme prinsipp jobb planleggere.,

Så, lage en veldig enkel Bash-shell script som heter delay_cmd.sh:

#!/bin/bash datesleep 5dateuptime 

date-kommandoen brukes til å skrive ut de gjeldende dato før og etter søvn kommando, på denne måten kan du se at skriptet er suspendert i 5 sekunder.

Etter 5 sekunder oppetid kommandoen er utført.

fornuftig?

I teorien kan vi skrive det samme skriptet i en enkelt linje:

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

Dette er fordi semikolon brukes i Linux for å skille ulike kommandoer og utføre dem i riktig rekkefølge.,

med andre ord, Linux gjør at hver kommando er ferdig før du utfører den neste.

Scenario 2: Bash Script som Bruker Søvn-Kommandoen til å Vente på et nytt Skript for å Fullføre

I dette eksempelet vil jeg lage to skript:

  1. program_1.sh: sover i 30 sekunder, og så oppretter en fil som heter stage1.komplett. Dette utgangspunktet simulerer et program som tar lang tid å fullføre en bestemt oppgave, og bekrefter ferdigstillelse av gjennomføringen ved å opprette stage1.komplett fil.
  2. program_2.sh: bruker en stund loop og på hver iterasjon sjekker om stage1.,komplett filen eksisterer. Hvis det ikke er det soveplass for 6 sekunder, hvis filen eksisterer det skriver ut meldingen «Filen stage1.komplett eksisterer. Fase 1 fullført, starter Fase 2…».

Her er program_1.sh:

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

ta kommandoen brukes av den første program til å opprette stage1.komplett fil etter 30 sekunder fra det øyeblikket kjøres skriptet.

Og program_2.sh er det følgende, vil vi bruke en Bash hvis else-setningen til å gjennomføre det:

I den andre Bash-skall-skriptet vi har en uendelig loop., Ved hver iterasjon skriptet:

  • Sjekker om filen stage1.komplett er til stede.
  • Hvis filen ikke eksisterer det soveplass for 6 sekunder
  • Hvis filen eksisterer det fjerner stage1.komplett filen og stopper utførelsen bruker Bash avslutt-kommando.,

Før du utfører to skript sørge for at de er både kjørbart med chmod +x kommando:

chmod +x program_*.sh

Så, la oss kjøre skript…

Vi vil kjøre program_1.sh første, vi vil kjøre den i bakgrunnen, slik at vi kan kjøre program_2.sh umiddelbart etter at det i samme terminal:

Som forventet den andre script holder med sengeplass for 6 sekunder før den finner filen stage1.hele filen, og deretter stopper det kjøring.,

Scenario 3: Søvn Kommando for å Kontrollere Antall Anrop til en Tredjepart API

Hvis du vil ringe et API ved hjelp av et Bash-script, så kan du bruke curl-kommandoen.

ved Hjelp av curl for å ringe et API er enkelt, la oss ta for eksempel følgende API endepunkt:

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

Vi vil skrive et Bash-script som bruker krøll for å utføre en GET-forespørsel mot den og bruker den i dvale-kommandoen til å begrense antall API-kall i en viss periode av tid.

Dette er gjort for å unngå å gå over eventuelle begrensninger av API-leverandør.,

Dette er manuset jeg har skrevet:

Noen ting om dette skriptet:

  • COUNTER-variabelen brukes til å telle antall API-kall for å bli henrettet før man går ut fra, mens loop.
  • cURL er brukt til å utføre GET-forespørsler mot API-et endepunkt.
  • Ved hver iterasjon av mens loop vi avbryte skriptet til 10 sekunder med søvn-kommandoen til å begrense antall API-anrop til en hver 10 sekunder.
  • Vi tilvekst TELLEREN variabel med bruk av aritmetisk operator $(( )).,

Så, kjøre skriptet:

Som forventet to API-kall utføres, og deretter gjennomføring av mens løkken stopper fordi verdien av variabelen TELLER er 3.

Konklusjon

jeg har vist deg forskjellige måter å bruke sleep-kommandoen i et Bash-script.

Og i den prosessen har jeg dekket mange forskjellige ting:

  • å Kjøre skript i bakgrunnen.
  • ved Hjelp av aritmetisk operator.
  • Uendelig mens looper.
  • Counter variabler.
  • Ringe et API bruke curl.
  • for å legge til og fjerne filer.,
  • Angi kjørbare tillatelser for Bash-skript.
  • Bruk semikolon for å kjøre kommandoer etter hverandre.

jeg håper det gjør all følelse!

Og du? Hvor ellers ville du bruke sleep-kommandoen i Bash? 🙂

i Slekt GRATIS Kurs: Dechiffrere Bash-Scripting