Sådan sætter du et Bash-script på pause med Linux Sleep-kommandoen

Sleep-kommandoen får din Linux-computer til at gøre ingenting. Kontraintuitivt måske, men en periode med inaktivitet er nogle gange lige hvad der er brug for. Denne artikel viser dig, hvordan du bruger denne Bash shell-kommando effektivt.

Det er nemt at bruge søvn. Skriv sleep, et mellemrum, et tal på kommandolinjen, og tryk derefter på Enter.

sleep 5

Markøren forsvinder i fem sekunder og vender derefter tilbage. Hvad skete der? Brug af dvale på kommandolinjen instruerer Bash om at suspendere behandlingen i den varighed, du har angivet. I vores eksempel var dette fem sekunder.

Vi kan overføre varigheder til at sove i dage, timer og minutter såvel som i sekunder. For at gøre dette skal du inkludere et suffiks på enten d, h, m eller s med varigheden. For at få søvnen til at holde pause i en dag, fire timer, syv minutter og fem sekunder, brug en kommando som denne:

sleep 1d 4h 7m 5s

Suffikset (i sekunder) er valgfrit. Uden suffiks vil søvn behandle enhver varighed som sekunder. Antag, at du ville have en søvnpause i fem minutter og tyve sekunder. Et korrekt format af denne kommando er:

sleep 5m 20

Hvis du glemmer at angive m-suffikset for minutternes varighed, vil du instruere søvnen til at holde pause i fem sekunder og derefter igen i tyve sekunder. Så søvnen holder pause i 25 sekunder.

  Sådan ændrer du størrelse på billedfiler på Linux

Mange kommandoer kræver, at du angiver parametre i en bestemt rækkefølge, men søvn er meget tilgivende. Du kan give dem i enhver rækkefølge, og søvn vil give mening ud af dem. Du kan også angive et flydende decimaltal som en parameter. For eksempel er 0,5 timer en gyldig måde at indikere, at du ønsker at hvile en halv time.

Alle de følgende (stadig mere excentriske) kommandoer fortæller, at søvnen skal holde pause i 10 sekunder.

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

Brug af dvale til at holde pause før en kommando

Sleep-kommandoen kan bruges til at give en pause før udførelsen af ​​en kommando. Denne kommando ville holde pause i 15 sekunder og derefter give et bip.

sleep 15 && echo -en ' 07'

Brug af søvn til at holde pause mellem to kommandoer

Du kan bruge dvale til at give en pause mellem to kommandoer. Denne kommando vil vise filerne i din Dokumentmappe, pause i fem sekunder og derefter ændre den aktuelle arbejdsmappe til din hjemmemappe:

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

Brug af dvale til at sætte udførelse af et script på pause

Du kan bruge sleep-kommandoen i shell-scripts til at sætte udførelse af scriptet på pause i et præcist tidsrum. Typisk vil du gøre dette for at give en vis proces tilstrækkelig tid til at fuldføre, før scriptet fortsætter sin behandling. Du kan også bruge den til at ratebegrænse de anmodninger, et script sender til en anden ressource.

  Sådan ændres kontoadgangskoder på Linux

For at demonstrere præcis det er her et script, der kalder ud til en Google-webtjeneste ved hjælp af curl. Når du forespørger på webtjenesten med ISBN nummeret på en bog, svarer den med et dump af JSON-data vedrørende den bog. Vi kan parse disse data ved at sende dem gennem værktøjet jq for at hente bogens titel. For at scriptet ikke skal stresse webtjenesten, sover det et sekund mellem webanmodninger.

Opret en fil, der indeholder følgende tekst, og gem 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."

Indtast følgende kommando for at indstille udførelsestilladelserne og gøre scriptet eksekverbart.

chmod +x check_book.sh

Scriptet kræver curl- og jq-værktøjerne. Brug apt-get til at installere disse pakker på dit system, hvis du bruger Ubuntu eller en anden Debian-baseret distribution. På andre Linux-distributioner skal du bruge din Linux-distributions pakkehåndteringsværktøj i stedet.

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

Opret en tekstfil, der indeholder følgende tal, og gem den som books.txt.

9781565921276
9781874416685
9781565921672
9780521431088
9781491941591

Kør check_book.sh scriptet, og send filen books.txt som en parameter.

./check_book.sh books.txt

Anmodningerne sendes til Googles webservice med et sekunds intervaller. Bogens titel vises kort efter hvert ISBN-nummer er forespurgt.

  Sådan bruger du Unified Remote til at styre en Linux-pc

Det er alt, der er at sove. Den indre funktion af check_book.sh-scriptet er uden for denne artikels omfang. Scriptet blev udelukkende valgt for at illustrere en gyldig brug af sleep-kommandoen. Hvis du ønsker at læse mere om de to hovedkomponenter i scriptet, henvises til krøllen projektside og jq online manual.