Командата за заспиване кара вашия Linux компютър да не прави нищо. Може би е контраинтуитивно, но периодът на бездействие понякога е точно това, което е необходимо. Тази статия ви показва как ефективно да използвате тази команда на обвивката на Bash.
Използването на сън е лесно. В командния ред въведете sleep, интервал, число и след това натиснете Enter.
sleep 5
Курсорът ще изчезне за пет секунди и след това ще се върне. Какво стана? Използването на заспиване в командния ред инструктира Bash да спре обработката за времето, което сте предоставили. В нашия пример това беше пет секунди.
Можем да предаваме продължителността на съня в дни, часове и минути, както и в секунди. За да направите това, включете суфикс от d, h, m или s с продължителността. За да накарате съня да спре за един ден, четири часа, седем минути и пет секунди, използвайте команда като тази:
sleep 1d 4h 7m 5s
Суфиксът s (за секунди) не е задължителен. Без суфикс сънят ще третира всяка продължителност като секунди. Да предположим, че искате да направите пауза за сън за пет минути и двадесет секунди. Един правилен формат на тази команда е:
sleep 5m 20
Ако забравите да посочите суфикса m за продължителността на минутите, ще инструктирате съня да направи пауза за пет секунди и след това отново за двадесет секунди. Така сънят ще спре за 25 секунди.
Много команди изискват да предоставите параметри в определен ред, но сънят е много прощаващ. Можете да ги предоставите в произволен ред и сънят ще има смисъл от тях. Можете също да предоставите число с плаваща запетая като параметър. Например, 0,5 часа е валиден начин да посочите, че искате сънят да спре за половин час.
Всички следващи (все по-ексцентрични) команди казват на съня да спре за 10 секунди.
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
Съдържание
Използване на заспиване за пауза преди команда
Командата за заспиване може да се използва, за да се даде пауза преди изпълнението на команда. Тази команда ще спре за 15 секунди и след това ще издаде звуков сигнал.
sleep 15 && echo -en ' 07'
Използване на заспиване за пауза между две команди
Можете да използвате сън, за да направите пауза между две команди. Тази команда ще изброи файловете във вашата директория с документи, ще направи пауза за пет секунди и след това ще промени текущата работна директория във вашата домашна директория:
ls -R ~/Documents && sleep 5 && cd ~
Използване на заспиване за пауза в изпълнението на скрипт
Можете да използвате командата за заспиване в скриптовете на обвивката, за да поставите на пауза изпълнението на скрипта за точно определен период от време. Обикновено бихте направили това, за да дадете достатъчно време за завършване на някакъв процес, преди скриптът да продължи обработката си. Можете също да го използвате, за да ограничите скоростта на заявките, които скриптът прави към друг ресурс.
За да демонстрираме точно това, ето скрипт, който извиква уеб услуга на Google с помощта на curl. Когато потърсите уеб услугата с ISBN номер на книга, той отговаря с изхвърляне на JSON данни относно тази книга. Можем да анализираме тези данни, като ги прехвърлим през помощната програма jq, за да извлечем заглавието на книгата. Така че скриптът не натоварва уеб услугата, той заспива за една секунда между уеб заявките.
Създайте файл, съдържащ следния текст, и го запазете като 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."
Въведете следната команда, за да зададете разрешенията за изпълнение и да направите скрипта изпълним.
chmod +x check_book.sh
Скриптът изисква помощните програми curl и jq. Използвайте apt-get, за да инсталирате тези пакети във вашата система, ако използвате Ubuntu или друга базирана на Debian дистрибуция. В други дистрибуции на Linux използвайте вместо това инструмента за управление на пакети на вашата Linux дистрибуция.
sudo apt-get install curl
sudo apt-get install jq
Създайте текстов файл, съдържащ следните числа, и го запазете като books.txt.
9781565921276 9781874416685 9781565921672 9780521431088 9781491941591
Изпълнете скрипта check_book.sh и предайте файла books.txt като параметър.
./check_book.sh books.txt
Заявките се отправят към уеб услугата на Google на интервали от една секунда. Заглавието на книгата ще се появи малко след запитване за всеки ISBN номер.
Това е всичко, което има за сън. Вътрешната работа на скрипта check_book.sh е извън обхвата на тази статия. Скриптът е избран само за да илюстрира валидно използване на командата за заспиване. Ако искате да прочетете повече за двата основни компонента на скрипта, вижте curl страница на проекта и jq онлайн ръководство.