Master Linux Sleep-kommandoen: Pause, vent, kontroller!

I Linux-verdenen har vi en kommando som heter «sleep», som i praksis setter datamaskinen i en form for dvale. Det kan virke litt rart, men noen ganger trenger man rett og slett en pause. I denne artikkelen skal vi se nærmere på hvordan du effektivt kan benytte deg av denne kommandoen i Bash-skallet.

Det er ganske enkelt å bruke «sleep». Du skriver bare «sleep», deretter et mellomrom, og så et tall. Når du trykker Enter, vil kommandoen starte.

sleep 5

Markøren vil forsvinne i fem sekunder og deretter komme tilbake. Hva har skjedd? Jo, «sleep»-kommandoen gir Bash beskjed om å stoppe all prosessering i den tidsperioden du har spesifisert. I eksemplet over var dette fem sekunder.

Vi kan angi varigheten for «sleep» i dager, timer og minutter, i tillegg til sekunder. For å gjøre dette, legger du til en bokstav etter tallet som representerer varigheten: «d» for dager, «h» for timer, «m» for minutter, og «s» for sekunder. Hvis du for eksempel ønsker at «sleep» skal pause i en dag, fire timer, syv minutter og fem sekunder, kan du bruke denne kommandoen:

sleep 1d 4h 7m 5s

Suffikset «s» (for sekunder) er valgfritt. Hvis du ikke legger til et suffiks, vil «sleep» automatisk tolke tallet som sekunder. La oss si at du vil ha en pause på fem minutter og tjue sekunder. Da kan du skrive kommandoen slik:

sleep 5m 20

Dersom du glemmer å skrive «m» etter minuttene, vil «sleep» tro at du vil ha en pause på fem sekunder og deretter en pause på tjue sekunder. I realiteten vil «sleep» da pause i totalt 25 sekunder.

Mange kommandoer krever at parametrene angis i en bestemt rekkefølge, men «sleep» er mer fleksibel. Du kan angi varigheten i den rekkefølgen du ønsker, og «sleep» vil forstå deg. Du kan også bruke desimaltall som parameter. For eksempel vil «0.5h» føre til en pause på en halv time.

Alle de følgende (litt mer uvanlige) kommandoene vil føre til at «sleep» stopper i 10 sekunder:

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

Bruke «sleep» før en kommando

«Sleep»-kommandoen kan brukes for å skape en pause før en annen kommando utføres. Denne kommandoen vil stoppe i 15 sekunder og deretter avgi en lyd:

sleep 15 && echo -en ' 07'

Bruke «sleep» mellom to kommandoer

Du kan også bruke «sleep» for å skape en pause mellom to kommandoer. Denne kommandoen vil vise filene i «dokument»-mappen din, pause i fem sekunder, og deretter endre den gjeldende mappen til hjemmemappen din:

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

Bruke «sleep» for å sette et skript på pause

«Sleep»-kommandoen er også nyttig i shell-skript, hvor du kan bruke den til å sette skriptets kjøring på pause i en bestemt tidsperiode. Vanligvis gjør man dette for å gi en prosess tid til å fullføre før skriptet fortsetter. Du kan også bruke den til å begrense hvor ofte et skript sender forespørsler til en annen ressurs.

For å demonstrere dette, skal vi se på et skript som henter informasjon fra en Google-nettjeneste ved hjelp av «curl». Når du spør etter nettjenesten med ISBN-nummeret til en bok, vil den svare med en JSON-datadump om boken. Vi kan analysere disse dataene ved å sende dem gjennom «jq»-verktøyet for å hente bokens tittel. For at skriptet ikke skal overbelaste nettjenesten, vil det pause i ett sekund mellom hver forespørsel.

Lag en ny 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 å gi skriptet kjøretillatelse og gjøre det kjørbart:

chmod +x check_book.sh

Skriptet krever verktøyene «curl» og «jq». Du kan installere disse ved hjelp av «apt-get» dersom du bruker Ubuntu eller en annen Debian-basert distribusjon. Hvis du bruker en annen Linux-distribusjon, kan du bruke den aktuelle pakkebehandleren.

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 bruk «books.txt»-filen som en parameter:

./check_book.sh books.txt

Forespørslene sendes til Googles nettjeneste med ett sekunds mellomrom. Boktittelen vises like etter at hvert ISBN-nummer er hentet.

Det er alt du trenger å vite om «sleep»-kommandoen. Den interne funksjonen til «check_book.sh»-skriptet er ikke relevant for denne artikkelen. Skriptet ble kun brukt for å illustrere et praktisk eksempel på hvordan «sleep»-kommandoen kan brukes. Hvis du vil vite mer om de to hovedkomponentene i skriptet, kan du besøke prosjektsiden for curl og online manual for jq.