6 полезных примеров команды sleep в Linux
Программисты Linux и системные администраторы предпочитают писать сценарии оболочки для автоматизации простых задач. Однако написать надежный сценарий – задача не из легких. Нам нужно решить множество угловых ситуаций, таких как – механизм повторных попыток, отладка, протоколирование, отчет об ошибках и т.д.
В дополнение к этому, часто нам нужно имитировать задержку в выполнении команды для тестирования сценариев таймаута. Аналогично, нам нужно ввести задержки в сценарий, чтобы реализовать механизм повторных попыток. Команда sleep является идеальным решением для обработки таких сценариев.
Синтаксис команды sleep
Синтаксис команды sleep очень прост, поскольку она принимает один обязательный параметр с необязательным суффиксом:
sleep <NUMBER>[SUFFIX]
Важно отметить, что в приведенном выше синтаксисе нет пробела между NUMBER и SUFFIX.
1. Как задержать выполнение команды Linux
По умолчанию команда sleep ожидает в течение нескольких секунд. Чтобы понять это, давайте напечатаем текущее время до и после команды sleep:
Например, следующая команда ждет 5 секунд после печати текущего времени:
date ' %r'; sleep 5; date ' %r'
В этом примере мы использовали точку с запятой ;
для разделения каждой команды.
2. Как заставить команду ждать N минут
Опционально команда sleep позволяет нам указать единицу времени с помощью суффиксов. Мы можем использовать следующие суффиксы с командой sleep:
- s – для указания единиц времени в секундах.
- m – для указания единиц времени в минутах.
- h – для указания единиц времени в часах.
- d – для указания единиц времени в днях.
Так, давайте используем суффикс m, чтобы поспать 1 минуту:
date ' %r'; sleep 1m; date ' %r'
Важный момент, который следует отметить – между NUMBER и SUFFIX не должно быть пробела.
3. Как заставить команду спать в течение X минут и секунд
Мы можем использовать несколько суффиксов с командой sleep. В этом случае продолжительность времени вычисляется путем суммирования всех значений.
Чтобы понять это, давайте воспользуемся следующей командой для сна в течение 1 минуты и 20 секунд:
date ' %r'; sleep 1m 20s; date ' %r'
В приведенном выше примере мы использовали два разных суффикса. Однако мы можем использовать и одинаковые суффиксы.
Например, мы можем использовать суффиксы 2s и 3s для сна в течение 5 секунд:
date ' %r'; sleep 2s 3s; date ' %r'
4. Как использовать числа с плавающей точкой в команде sleep
Дополнительно команда sleep также принимает на вход числа с плавающей точкой. Например, мы можем использовать значение 0.5s, чтобы поспать полсекунды:
date ' %r'; sleep 0.5s; date ' %r'
В приведенном выше выводе видно, что команда date показывает то же значение для единицы времени секунды.
В дополнение к этому, мы можем использовать плавающие значения с другими суффиксами. Например, мы можем использовать значение 0.5m для сна в течение 30 секунд:
date ' %r'; sleep 0.5m; date ' %r'
5. Как имитировать будильник с помощью команды sleep
В нескольких предыдущих примерах мы видели, как использовать команду sleep для задержки выполнения следующей команды. Мы можем использовать этот трюк для имитации будильника.
Так, давайте воспользуемся следующей командой для установки будильника через 5 секунд:
sleep 5; cvlc alarm.mp3
Приведенная выше команда открывает файл alarm.mp3 с помощью медиаплеера VLC после ожидания в течение 5 минут. Как и любая другая команда Linux, мы можем использовать комбинацию клавиш ctrl + c, чтобы остановить медиаплеер VLC.
6. Как имитировать цифровые часы с помощью команды sleep
Чтобы имитировать цифровые часы, мы можем запустить команду sleep в бесконечном цикле через каждую секунду. Поясним это на примере.
Сначала напишем простой shell-скрипт под названием digital-clock.sh со следующим кодом:
#!/bin/bash while [ 1 ] do clear tput cup 5 30 date ' %r' sleep 1 done
В этом скрипте мы использовали команду tput, чтобы поместить курсор в строку №5 и колонку №30.
Теперь давайте запустим скрипт и посмотрим результат:
chmod x digital-clock.sh ./digital-clock.sh
Наконец, мы можем использовать комбинацию клавиш ctrl + c, чтобы остановить выполнение скрипта.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен www.tecmint.com
Комментарии (0)