Фатмавати Ахмад Заенури/Shutterstock.com
Команда sleep заставляет ваш компьютер Linux ничего не делать. Возможно, нелогично, но период бездействия иногда – то, что нужно. В этой статье показано, как эффективно использовать эту команду оболочки Bash.
Использовать sleep
легко. В командной строке введите sleep
, пробел, число и нажмите клавишу ВВОД.
сон 5
Курсор исчезнет на пять секунд, а затем вернется. Что случилось? Использование sleep
в командной строке указывает Bash приостановить обработку на указанный вами срок. В нашем примере это было пять секунд.
Мы можем передавать длительности sleep
в днях, часах и минутах, а также в секундах. Для этого включите суффикс d, h, m,
или s
с продолжительностью. Чтобы приостановить сон на один день, четыре часа, семь минут и пять секунд, используйте команду, подобную этой:
сон 1д 4ч 7м 5с
Суффикс s
(для секунд) является необязательным. Без суффикса sleep
будет рассматривать любую длительность в секундах. Предположим, вы хотели сделать паузу sleep
на пять минут и двадцать секунд. Один правильный формат этой команды:
спать 5м 20
Если вы забудете указать суффикс m
для продолжительности минут, вы дадите sleep
паузу на пять секунд, а затем снова на двадцать секунд. Так что sleep
приостановится на 25 секунд.
Многие команды требуют, чтобы вы предоставили параметры в определенном порядке, но sleep
очень простителен. Вы можете предоставить их в любом порядке, и sleep
будет иметь для них смысл. Вы также можете указать число с плавающей запятой в качестве параметра. Например, 0.5h – это правильный способ указать, что вы хотите, чтобы sleep
сделал паузу на полчаса.
Все следующие (все более эксцентричные) команды сообщают sleep
о приостановке на 10 секунд.
сон 10
sleep 5 5s
Сон 1 1 1 с 1 1 1 с 1 2
сон 0,16667 м
Использование сна для остановки перед командой
Команда sleep
может использоваться для приостановки перед выполнением команды. Эта команда остановится на 15 секунд, а затем выдаст звуковой сигнал.
sleep 15 && echo -en '\ 007'
Использование Sleep для паузы между двумя командами
Вы можете использовать sleep
, чтобы сделать паузу между двумя командами. Эта команда выведет список файлов в вашем каталоге Documents, сделает паузу на пять секунд, а затем изменит текущий рабочий каталог на ваш домашний каталог:
ls -R ~/Documents && sleep 5 && cd ~
Использование Sleep для приостановки выполнения скрипта
Вы можете использовать команду sleep
в сценариях оболочки, чтобы приостановить выполнение сценария на определенное время. Как правило, вы делаете это для того, чтобы некоторый процесс мог завершиться, прежде чем скрипт продолжит свою обработку. Вы также можете использовать его для ограничения количества запросов, которые скрипт делает к другому ресурсу.
Чтобы продемонстрировать это, вот скрипт, который обращается к веб-сервису Google с помощью curl
. Когда вы запрашиваете у веб-службы номер ISBN книги, он отвечает дампом данных JSON, касающихся этой книги. Мы можем проанализировать эти данные, передав их через утилиту jq
, чтобы получить название книги. Чтобы скрипт не подвергал нагрузке веб-службу, он спит одну секунду между веб-запросами.
Создайте файл, содержащий следующий текст, и сохраните его как check_book.sh
.
#!/Bin/Баш за книгу в "кошке $ 1" делать echo $ book ":" curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | JQ '.items | . [] | .volumeInfo.title» эхо "" спать 1 сделанный эхо "Все готово."
Введите следующую команду, чтобы установить права на выполнение и сделать исполняемый скрипт.
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
выходит за рамки этой статьи. Сценарий был выбран исключительно для иллюстрации правильного использования команды sleep
. Если вы хотите узнать больше о двух основных компонентах скрипта, обратитесь к странице проекта curl
и интерактивному руководству jq
.