Как да поставите на пауза Bash скрипт с командата за заспиване на Linux

Командата за заспиване кара вашия Linux компютър да не прави нищо. Може би е контраинтуитивно, но периодът на бездействие понякога е точно това, което е необходимо. Тази статия ви показва как ефективно да използвате тази команда на обвивката на Bash.

Използването на сън е лесно. В командния ред въведете sleep, интервал, число и след това натиснете Enter.

sleep 5

Курсорът ще изчезне за пет секунди и след това ще се върне. Какво стана? Използването на заспиване в командния ред инструктира Bash да спре обработката за времето, което сте предоставили. В нашия пример това беше пет секунди.

Можем да предаваме продължителността на съня в дни, часове и минути, както и в секунди. За да направите това, включете суфикс от d, h, m или s с продължителността. За да накарате съня да спре за един ден, четири часа, седем минути и пет секунди, използвайте команда като тази:

sleep 1d 4h 7m 5s

Суфиксът s (за секунди) не е задължителен. Без суфикс сънят ще третира всяка продължителност като секунди. Да предположим, че искате да направите пауза за сън за пет минути и двадесет секунди. Един правилен формат на тази команда е:

sleep 5m 20

Ако забравите да посочите суфикса m за продължителността на минутите, ще инструктирате съня да направи пауза за пет секунди и след това отново за двадесет секунди. Така сънят ще спре за 25 секунди.

  Как да играете Sony PSP игри в Retro Arch на Linux

Много команди изискват да предоставите параметри в определен ред, но сънят е много прощаващ. Можете да ги предоставите в произволен ред и сънят ще има смисъл от тях. Можете също да предоставите число с плаваща запетая като параметър. Например, 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 ~

Използване на заспиване за пауза в изпълнението на скрипт

Можете да използвате командата за заспиване в скриптовете на обвивката, за да поставите на пауза изпълнението на скрипта за точно определен период от време. Обикновено бихте направили това, за да дадете достатъчно време за завършване на някакъв процес, преди скриптът да продължи обработката си. Можете също да го използвате, за да ограничите скоростта на заявките, които скриптът прави към друг ресурс.

  Как да преместите вашата домашна директория на Linux на друг диск

За да демонстрираме точно това, ето скрипт, който извиква уеб услуга на 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 номер.

  Още 6 джаджи KDE Plasma 5 за вашия Linux десктоп

Това е всичко, което има за сън. Вътрешната работа на скрипта check_book.sh е извън обхвата на тази статия. Скриптът е избран само за да илюстрира валидно използване на командата за заспиване. Ако искате да прочетете повече за двата основни компонента на скрипта, вижте curl страница на проекта и jq онлайн ръководство.