Як призупинити скрипт Bash за допомогою команди Linux Sleep

| | 0 Comments| 8:39 PM
Categories:

Команда sleep змушує ваш комп’ютер Linux нічого не робити. Можливо, це суперечить інтуїції, але іноді необхідний період бездіяльності. У цій статті показано, як ефективно використовувати цю команду оболонки Bash.

Використовувати сон легко. У командному рядку введіть сон, пробіл, число, а потім натисніть Enter.

sleep 5

Курсор зникне на п’ять секунд, а потім повернеться. Що сталося? Використання режиму сну в командному рядку наказує Bash призупинити обробку на вказаний вами термін. У нашому прикладі це було п’ять секунд.

Ми можемо передавати тривалість сну в днях, годинах і хвилинах, а також у секундах. Для цього додайте суфікс d, h, m або s із тривалістю. Щоб призупинити сон на один день, чотири години, сім хвилин і п’ять секунд, скористайтеся такою командою:

sleep 1d 4h 7m 5s

Суфікс s (для секунд) необов’язковий. Без суфікса сон розглядатиме будь-яку тривалість як секунди. Припустимо, ви хочете зробити паузу сну на п’ять хвилин і двадцять секунд. Один правильний формат цієї команди:

sleep 5m 20

Якщо ви забудете вказати суфікс m для тривалості хвилин, ви дасте команду сну призупинитися на п’ять секунд, а потім знову на двадцять секунд. Таким чином, сон призупиниться на 25 секунд.

  Як грати в 911 Operator на 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 ~

Використання режиму сну для призупинення виконання сценарію

Ви можете використовувати команду сну в сценаріях оболонки, щоб призупинити виконання сценарію на певний проміжок часу. Як правило, ви робите це, щоб дати деякий процес достатньо часу для завершення, перш ніж сценарій продовжить свою обробку. Ви також можете використовувати його для обмеження швидкості запитів, які скрипт робить до іншого ресурсу.

  Як читати Hacker News на робочому столі 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.

  Як відключити обліковий запис Root в Linux

Це все, що можна спати. Внутрішня робота сценарію check_book.sh виходить за рамки цієї статті. Сценарій був обраний виключно для ілюстрації правильного використання команди сну. Якщо ви хочете дізнатися більше про два основних компоненти сценарію, зверніться до curl сторінка проекту і jq он-лайн посібник.