💤 Как использовать команду “sleep” на Linux [6 полезных примеров]

Команда sleep на Linux

by itisgood

Краткое содержание: В этом руководстве мы рассмотрим практические примеры команд sleep.

По этому руководству, программисты Linux смогут использовать команду sleep для написания надежных скриптов оболочки.

Программисты и системные администраторы Linux предпочитают писать скрипты bash для автоматизации простых задач.

Однако написать надежный скрипт- задача не из легких.

Нам нужно решить множество угловых ситуаций, таких как – механизм повторных попыток, отладка, протоколирование, отчет об ошибках и т.д.

Кроме того, во многих случаях нам необходимо имитировать задержку в выполнении команды для тестирования сценариев тайм-аута.

Аналогично, нам нужно ввести задержки в сценарий для реализации механизма повторных попыток.

Команда sleep является идеальным решением для таких сценариев.

В этом руководстве мы обсудим использование команды sleep.

Как следует из названия, команда sleep используется для задержки выполнения следующей команды.

Она заставляет вызывающую программу заснуть на определенное время.

Итак, давайте узнаем больше о командах sleep на практических примерах в Linux.

Синтаксис команды sleep

Синтаксис команды sleep очень прост, так как она принимает один обязательный параметр с необязательным суффиксом:

$ sleep <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'

3. Как сделать команду sleep на X минут и секунд

Мы можем использовать несколько суффиксов с командой sleep.

В этом случае продолжительность времени вычисляется путем суммирования всех значений.

Чтобы понять это, давайте используем следующую команду для сна на 1 минуту и 20 секунд:

$ date '+%r'; sleep 1m 20s; date '+%r'

В приведенном выше примере мы использовали два разных суффикса.

Однако мы можем использовать и одинаковые суффиксы.

Например, мы можем использовать суффиксы 2s и 3s, чтобы указать 5 секунд:

Отправив очень длинный пароль (1.000.000 символов), можно вызвать атаку типа “отказ в обслуживании” на сервер. Это может привести к тому, что веб-сайт станет недоступным или не будет реагировать на запросы.

Обычно эта проблема возникает из-за уязвимой реализации хэширования паролей

. При отправке длинного пароля процесс хеширования пароля приводит к истощению процессора и памяти.

Эта уязвимость была обнаружена путем отправки паролей различной длины и сравнения измеренного времени отклика.

$ 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.

В данном примере мы использовали медиаплеер VLC, но для достижения того же результата можно использовать любой другой медиаплеер Linux или звуковую утилиту.

6. Как имитировать цифровые часы с помощью команды sleep

Для имитации цифровых часов мы можем запустить команду sleep в бесконечном цикле через каждую секунду.

Давайте разберемся в этом на примере.

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

Заключение

В этом руководстве мы обсудили, как использовать команду sleep для отсрочки выполнения следующей команды.

Знаете ли вы другие другие примеры использования команды sleep в Linux? Сообщите нам о своем мнении в комментариях ниже.

см. также:

You may also like

Leave a Comment