Kommandot ”sleep” i Linux får din dator att vila, att inte göra någonting aktivt. Det kan låta konstigt, men ibland är en paus precis vad som behövs. Denna guide visar dig hur du på ett effektivt sätt kan utnyttja detta Bash-skalkommando.
Att använda ”sleep” är enkelt. Skriv ”sleep”, följt av ett blanksteg och ett tal på kommandoraden. Bekräfta sedan med Enter.
Exempel:
sleep 5
Markören försvinner i fem sekunder och dyker sedan upp igen. Vad händer egentligen? Genom att använda ”sleep” på kommandoraden instruerar du Bash att avbryta all aktivitet under den angivna tiden. I exemplet ovan varade detta avbrott i fem sekunder.
Vi kan ange tidsperioder för ”sleep” i dagar, timmar och minuter, utöver sekunder. Detta görs genom att lägga till en suffix av antingen ”d”, ”h”, ”m” eller ”s” till tidsangivelsen. Om du till exempel vill att ”sleep” ska pausa i en dag, fyra timmar, sju minuter och fem sekunder, kan du använda följande kommando:
sleep 1d 4h 7m 5s
Suffixet för sekunder (”s”) är valfritt. Utan suffix antar ”sleep” att den angivna tidsperioden är i sekunder. Om du vill göra en paus på fem minuter och tjugo sekunder, ser ett korrekt format för kommandot ut så här:
sleep 5m 20
Om du glömmer att ange suffixet ”m” för minuterna, kommer ”sleep” att pausa i fem sekunder och sedan igen i tjugo sekunder, vilket resulterar i en sammanlagd paus på 25 sekunder.
Många kommandon kräver att parametrar anges i en specifik ordning, men ”sleep” är ganska flexibelt. Du kan ange tidsangivelser i vilken ordning du vill, och ”sleep” kommer fortfarande att tolka dem korrekt. Du kan även ange decimaltal som parameter. Till exempel är ”0.5h” ett giltigt sätt att ange en paus på en halvtimme.
Alla följande kommandon (med ökande excentricitet) instruerar ”sleep” att pausa i 10 sekunder:
sleep 10
sleep 5 5s
sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
Använd ”sleep” för att pausa före ett kommando
Kommandot ”sleep” kan användas för att skapa en fördröjning innan ett annat kommando körs. Följande kommando pausar i 15 sekunder och avger sedan ett ljudsignal:
sleep 15 && echo -en '\a'
Använd ”sleep” för att pausa mellan två kommandon
Du kan använda ”sleep” för att skapa en paus mellan två kommandon. Följande kommando listar filerna i din dokumentmapp, pausar i fem sekunder och ändrar sedan den aktuella arbetskatalogen till din hemkatalog:
ls -R ~/Documents && sleep 5 && cd ~
Använd ”sleep” för att pausa exekveringen av ett skript
Du kan integrera kommandot ”sleep” i skalskript för att pausa exekveringen av skriptet under en specifik tid. Det används ofta för att ge en process tillräckligt med tid att slutföra sina uppgifter innan skriptet fortsätter. Det kan även användas för att kontrollera hastigheten på förfrågningar som ett skript gör mot en annan resurs.
För att visa hur det fungerar, visas här ett skript som kommunicerar med en Google-webbtjänst med hjälp av ”curl”. När du skickar ett ISBN nummer för en bok till webbtjänsten, returneras en JSON-data som innehåller information om boken. Denna data kan analyseras med verktyget ”jq” för att hämta bokens titel. För att inte överbelasta webbtjänsten, pausar skriptet i en sekund mellan webbförfrågningarna.
Skapa en fil med följande text och spara 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."
Ge skriptet exekveringsrättigheter med följande kommando:
chmod +x check_book.sh
Skriptet förutsätter att du har verktygen ”curl” och ”jq” installerade. Använd ”apt-get” för att installera dessa på ditt system om du använder Ubuntu eller en annan Debian-baserad distribution. På andra Linux-distributioner kan du använda din distributions pakethanterare.
sudo apt-get install curl
sudo apt-get install jq
Skapa en textfil med följande ISBN-nummer och spara den som ”books.txt”:
9781565921276 9781874416685 9781565921672 9780521431088 9781491941591
Kör skriptet ”check_book.sh” och skicka in ”books.txt” som parameter:
./check_book.sh books.txt
Webbförfrågningarna till Googles webbtjänst görs med en sekunds mellanrum. Boktiteln visas strax efter att varje ISBN-nummer har sökts upp.
Det är allt som finns att veta om ”sleep”. Detaljerna i skriptet ”check_book.sh” ligger utanför ramen för denna artikel. Skriptet valdes enbart för att illustrera ett exempel på användning av kommandot ”sleep”. Om du vill lära dig mer om de två huvudkomponenterna i skriptet, se curl projektets sida och jq online manual.