Как приостановить скрипт Bash с помощью команды сна в Linux
Команда sleep заставляет ваш Linux-компьютер ничего не делать. Возможно, это нелогично, но иногда просто необходим период бездействия. В этой статье показано, как эффективно использовать эту команду оболочки Bash.
Использовать sleep
очень просто. В командной строке введите sleep
, пробел, число и нажмите Enter.
sleep 5
Курсор исчезнет на пять секунд, а затем вернется. Что случилось? Использование sleep
в командной строке указывает Bash приостановить обработку на указанное вами время. В нашем примере это было пять секунд.
Мы можем передать продолжительность в sleep
в днях, часах и минутах, а также в секундах. Для этого добавьте суффикс d, h, m,
или s
к длительности. Чтобы приостановить сон на один день, четыре часа, семь минут и пять секунд, используйте следующую команду:
sleep 1d 4h 7m 5s
Суффикс s
(для секунд) необязателен. Без суффикса sleep
будет рассматривать любую продолжительность как секунды. Предположим, вы хотите сделать паузу sleep
на пять минут и двадцать секунд. Один правильный формат этой команды:
sleep 5m 20
Если вы забудете добавить суффикс m
к длительности минут, вы укажете sleep
сделать паузу на пять секунд, а затем еще раз на двадцать секунд. Таким образом, sleep
приостанавливается на 25 секунд.
Многие команды требуют указания параметров в определенном порядке, но sleep
очень щадящий. Вы можете указать их в любом порядке, и sleep
будет иметь смысл. Вы также можете указать число с плавающей запятой в качестве параметра. Например, 0,5 часа — это допустимый способ указать, что вы хотите приостановить sleep
на полчаса.
Все следующие (все более эксцентричные) команды сообщают sleep
паузу на 10 секунд.
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
Использование сна для паузы перед командой
Команду sleep
можно использовать для создания паузы перед выполнением команды. Эта команда будет приостанавливаться на 15 секунд, а затем издавать звуковой сигнал.
sleep 15 && echo -en '\007'
Использование Sleep для паузы между двумя командами
Вы можете использовать sleep
, чтобы дать паузу между двумя командами. Эта команда выведет список файлов в вашем каталоге Documents, сделает паузу на пять секунд, а затем изменит текущий рабочий каталог на ваш домашний каталог:
ls -R ~/Documents && sleep 5 && cd ~
Использование сна для приостановки выполнения скрипта
Вы можете использовать команду sleep
в сценариях оболочки, чтобы приостановить выполнение сценария на определенное время. Как правило, вы делаете это, чтобы дать некоторому процессу достаточно времени для завершения, прежде чем сценарий продолжит свою работу. Вы также можете использовать его для ограничения скорости запросов, которые скрипт делает к другому ресурсу.
Чтобы продемонстрировать именно это, вот сценарий, который обращается к веб-службе 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
выходит за рамки этой статьи. Сценарий был выбран исключительно для иллюстрации правильного использования команды sleep
. Если вы хотите узнать больше о двух основных компонентах скрипта, обратитесь к странице проекта curl
и онлайн-руководству jq
.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts