Hvordan sette et Bash-skript på pause med Linux Sleep-kommandoen

Sleep-kommandoen får Linux-datamaskinen til å ikke gjøre noe. Mot-intuitivt kanskje, men en periode med inaktivitet er noen ganger akkurat det som trengs. Denne artikkelen viser deg hvordan du bruker denne Bash-skallkommandoen effektivt.

Det er enkelt å bruke søvn. Skriv sleep, et mellomrom, et tall på kommandolinjen, og trykk deretter på Enter.

sleep 5

Markøren forsvinner i fem sekunder og går deretter tilbake. Hva skjedde? Bruk av dvale på kommandolinjen instruerer Bash om å stanse behandlingen i den varigheten du har oppgitt. I vårt eksempel var dette fem sekunder.

Vi kan overføre varigheter til søvn i dager, timer og minutter, så vel som i sekunder. For å gjøre dette inkluderer du et suffiks på enten d, h, m eller s med varigheten. For å få søvnen til å pause i én dag, fire timer, syv minutter og fem sekunder, bruk en kommando som denne:

sleep 1d 4h 7m 5s

Suffikset (i sekunder) er valgfritt. Uten suffiks vil søvn behandle enhver varighet som sekunder. Anta at du ønsket å ha en søvnpause i fem minutter og tjue sekunder. Et riktig format for denne kommandoen er:

sleep 5m 20

Hvis du glemmer å oppgi m-suffikset for minuttets varighet, vil du instruere søvnen til å pause i fem sekunder og deretter igjen i tjue sekunder. Så søvn vil pause i 25 sekunder.

  Hvordan deaktivere UFW-brannmuren i Linux

Mange kommandoer krever at du oppgir parametere i en bestemt rekkefølge, men søvn er veldig tilgivende. Du kan gi dem i hvilken som helst rekkefølge og søvn vil gi mening ut av dem. Du kan også angi et flyttallnummer som en parameter. For eksempel er 0,5 timer en gyldig måte å indikere at du ønsker en pause i søvnen i en halv time.

Alle de følgende (stadig mer eksentriske) kommandoene forteller at søvnen skal stoppe i 10 sekunder.

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

Bruke dvale for å pause før en kommando

Sleep-kommandoen kan brukes til å gi en pause før utførelse av en kommando. Denne kommandoen stopper i 15 sekunder og gir deretter et pip.

sleep 15 && echo -en ' 07'

Bruke hvilemodus for å pause mellom to kommandoer

Du kan bruke dvale for å gi en pause mellom to kommandoer. Denne kommandoen vil vise filene i dokumentkatalogen, pause i fem sekunder og deretter endre gjeldende arbeidskatalog til hjemmekatalogen din:

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

Bruke hvilemodus for å sette kjøringen av et skript på pause

Du kan bruke sleep-kommandoen i shell-skript for å sette kjøringen av skriptet på pause i en nøyaktig periode. Vanligvis vil du gjøre dette for å gi en viss prosess tilstrekkelig tid til å fullføre før skriptet fortsetter behandlingen. Du kan også bruke den til å ratebegrense forespørslene et skript sender til en annen ressurs.

  Hvordan installere Jellyfin Media Player på Linux

For å demonstrere akkurat det, her er et skript som kaller ut til en Google-netttjeneste ved hjelp av curl. Når du spør etter nettjenesten med ISBN nummeret til en bok, svarer den med en dump av JSON-data angående den boken. Vi kan analysere disse dataene ved å sende dem gjennom jq-verktøyet for å hente tittelen på boken. For at skriptet ikke skal stresse nettjenesten, sover det i ett sekund mellom nettforespørslene.

Lag en fil som inneholder følgende tekst, og lagre den som 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."

Skriv inn følgende kommando for å angi kjøringstillatelsene og gjøre skriptet kjørbart.

chmod +x check_book.sh

Skriptet krever curl- og jq-verktøyene. Bruk apt-get for å installere disse pakkene på systemet ditt hvis du bruker Ubuntu eller en annen Debian-basert distribusjon. På andre Linux-distribusjoner, bruk Linux-distribusjonens pakkehåndteringsverktøy i stedet.

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

Lag en tekstfil som inneholder følgende tall, og lagre den som books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Kjør check_book.sh-skriptet og send inn books.txt-filen som en parameter.

./check_book.sh books.txt

Forespørslene sendes til Googles nettjeneste med ett sekunds mellomrom. Tittelen på boken vises kort tid etter at hvert ISBN-nummer er spurt.

  Hvordan installere programvare ved å bruke Git på Linux

Det er alt som er å sove. Den indre funksjonen til check_book.sh-skriptet er utenfor rammen av denne artikkelen. Skriptet ble valgt utelukkende for å illustrere en gyldig bruk av sleep-kommandoen. Hvis du ønsker å lese mer om de to hovedkomponentene i manuset, se krøllen prosjektsiden og jq online manual.