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.
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
Innholdsfortegnelse
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.
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.
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.