Bash Sleep Command: en hurtig Guide til at bruge den i dine Scripts
Vi vil normalt have et script til at køre hurtigt, men det er ikke altid tilfældet. Nogle gange giver det mening for vores Bash-script at bruge sleep-kommandoen, før du udfører den næste kommando. Lad os finde ud af, hvornår…
Hvad er Bash sleep-kommandoen?bash sleep-kommandoen forsinker udførelsen af kommandoen efter den i en given tid. Søvntiden udtrykkes i sekunder. Brugen af sleep-kommandoen er almindelig, når du planlægger en opgave hvert seconds sekund, eller når et script er afhængigt af et andet script for at fuldføre dens udførelse.,
lad os se på tre scenarier, hvor du vil bruge sleep-kommandoen:
- i stedet for at køre en kommando med det samme, vil du planlægge dens udførelse seconds sekunder i fremtiden.
- et program tager lang tid at behandle et sæt filer, og når behandlingen er færdig, genererer den en fil for at indikere det. Du kan skrive et script, der kontrollerer, om filen findes, og sover i en vis periode, hvis det ikke. ellers udfører det næste trin i processen baseret på de filer, der genereres af det første program.,
- du ringer til en tredjeparts API programmatisk, og du ved, at API ‘ en ikke tillader mere end 60 anmodninger pr. Sove i seconds sekunder giver dig mulighed for at sikre dig, at du ikke går over antallet af anmodninger pr.
lad os komme i gang!,
Grundlæggende Syntaks i Bash Sove Kommando
Den grundlæggende syntaks i søvn kommando i Bash er meget simpelt:
sleep <SECONDS>
Her er hvad sker der, hvis du kører det på kommandolinjen:
$ sleep 5$
I dette tilfælde efter udførelse af sove-5 Linux kommando returnerer shell tilbage efter 5 sekunder.
og lad os nu gå til tre praktiske eksempler på, hvordan du Bash sleep-kommandoen.,
Scenarie 1: Søvn-Kommando, der Forsinker Udførelsen af en Anden Kommando i et Bash-Script
jeg vil skrive et simpelt Bash-shell script til at vise den nøjagtige adfærd sove kommando…
…i betragtning af, at den foregående eksempel kunne ikke rigtig viser, at søvn kommando vendte tanken tilbage efter 5 sekunder.
lad os skrive et script, der gør det, jeg har forklaret i Scenario 1, det forsinker udførelsen af en kommando med seconds sekunder (i dette tilfælde 5 sekunder).
det er næsten som at udføre en kommando på et bestemt tidspunkt efter det samme princip med jobplanlæggere.,
så opret et meget simpelt Bash shell-script kaldet delay_cmd.sh
:
#!/bin/bash datesleep 5dateuptime
kommandoen Dato bruges til at udskrive den aktuelle dato før og efter sleep-kommandoen, på denne måde kan du se, at scriptet er suspenderet i 5 sekunder.
efter 5 sekunder udføres oppetidskommandoen.
giver mening?
i teorien kan vi skrive det samme script på en enkelt linje:
#!/bin/bash date; sleep 5; date; uptime
dette skyldes, at semikolonet bruges i Linu.til at adskille forskellige kommandoer og udføre dem sekventielt.,
med andre ord sørger Linu.for, at hver kommando fuldfører, før den næste udføres.
scenarie 2: Bash-Script, der bruger Sleep-kommandoen til at vente på, at et andet Script er afsluttet
i dette eksempel opretter jeg to scripts:
- program_1.sh: sover i 30 sekunder, og så opretter den en fil kaldet stage1.fuldføre. Dette simulerer dybest set et program, der tager lang tid at udføre en bestemt opgave og bekræfter færdiggørelsen af dens udførelse ved at oprette stage1.komplet fil.
- program_2.sh: bruger et stykke tid loop og ved hver iteration kontrollerer, om stage1.,komplet fil findes. Hvis den ikke det sover i 6 sekunder, hvis filen findes den udskriver meddelelsen”File stage1.komplet eksisterer. Trin 1 komplet, startfase 2…”.
Her er program_1.sh:
#!/bin/bash sleep 30touch stage1.complete
kommandoen touch anvendes af det første program til at oprette stage1.komplet fil efter 30 sekunder fra det øjeblik scriptet udføres.
og program_2.sh er følgende, bruger vi en Bash if else-erklæring til at implementere den:
i det andet Bash shell-script har vi en uendelig løkke., Ved hver iteration scriptet:
- kontrollerer, om filen stage1.komplet er til stede.
- hvis filen ikke findes, sover den i 6 sekunder
- hvis filen findes, fjerner den stage1.komplet fil og stopper udførelsen ved hjælp af kommandoen Bash e .it.,
Før du udfører de to scripts sørg for, at de er både eksekverbare hjælp chmod +x kommando:
chmod +x program_*.sh
Så lad os køre de scripts,…
Vi vil køre program_1.sh
for det første, vi vil køre det i baggrunden, så at vi kan køre program_2.sh
straks efter, at der i den samme terminal:
Som forventet andet script holder sovende til 6 sekunder, indtil den finder den stage1-fil.komplet fil, og så er det stopper det udførelse.,
Scenario 3: Sleep-kommando for at kontrollere antallet af opkald til en tredjeparts API
Hvis du vil kalde en API ved hjælp af et Bash-script, kan du bruge kommandoen curl.tag for eksempel følgende API-endpoint:
https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22
Vi vil skrive et Bash-script, der bruger curl til at udføre en GET-anmodning imod det og bruger sleep-kommandoen til at begrænse antallet af API-opkald i en bestemt periode.
dette gøres for at undgå at gå over eventuelle grænser pålagt af API-udbyderen.,
Dette er det script, jeg har skrevet:
få ting om dette script:
- tællervariablen bruges til at tælle antallet af API-opkald, der skal udføres, før de forlader whilehile-løkken.
- cURL bruges til at udføre GET-anmodningerne mod API-endepunktet.
- ved hver iteration af whilehile-løkken suspenderer vi scriptet i 10 sekunder med sleep-kommandoen for at begrænse antallet af API-opkald til et hvert 10.sekund.
- Vi øger tællervariablen ved hjælp af den aritmetiske operatør $(( )).,
så udfør scriptet:
som forventet udføres to API-opkald, og derefter stopper udførelsen af whilehile-løkken, fordi værdien af variabeltælleren er 3.
konklusion
Jeg har vist dig forskellige måder at bruge sleep-kommandoen i et Bash-script.
og i processen har jeg dækket mange forskellige ting:
- kører scripts i baggrunden.
- ved hjælp af den aritmetiske operatør.
- uendelig mens sløjfer.
- tæller variabler.
- opkald til en API ved hjælp af curl.
- oprettelse og fjernelse af filer.,
- indstilling eksekverbare tilladelser til Bash scripts.
- brug af semikolon til at køre kommandoer sekventielt.
Jeg håber, det giver mening!
og dig? Hvordan ville du ellers bruge sleep-kommandoen i Bash? Related
relateret gratis kursus: dechifrere Bash Scripting