С чего начать Первые шаги трек · 15 ступеней
Linux Labs

sleep — задержка выполнения

3 мин Ubuntu 24.04; Bash 5.2 for shell builtins

Приостанавливает выполнение на заданное время; не проверяет готовность другой программы.

Шпаргалка

5 команд Версия для печати
  • sleep 1 пауза на одну секунду
  • sleep 0.5 дробное число секунд в GNU sleep
  • sleep 2s явная единица времени
  • sleep 1m одна минута
  • sleep --help справка установленной версии

Обзор

sleep создаёт задержку: следующий последовательный шаг оболочки начнётся после её окончания. Пока команда ждёт, процесс обычно спит и почти не расходует CPU. Именно поэтому он удобен для учебного наблюдения за процессами.

Ожидание времени и ожидание результата — разные задачи. Пять секунд после запуска веб-сервера не доказывают, что он уже принимает запросы. Для готовности нужна проверка самого сервиса, а для завершения дочерней задачи — wait.

Ключи

2

Продолжительность — аргумент команды, а не ключ. GNU sleep понимает суффиксы s, m, h, d; без суффикса число означает секунды. Несколько интервалов суммируются. Для переносимого сценария используй одно целое неотрицательное число секунд.

Ключи справки и версии описывают программу, а не запускают таймер. Доступный интерфейс сверяй через sleep --help; особенности GNU не следует автоматически переносить на другие реализации.

Ключ Что делает Пример
--help Показать справку установленной версии. sleep --help
--version Показать версию coreutils. sleep --version

Ничего не найдено. Попробуй запрос короче.

Рецепты

3

Отделить два наблюдения

bash
date
sleep 2
date

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

Запустить короткую задачу в фоне

Выполни весь пример в одной оболочке:

bash
sleep 3 &
delay_pid=$!
wait "$delay_pid"

$! сохраняет PID последнего фонового запуска. Здесь wait связывает продолжение с окончанием конкретной задачи, а не со второй предполагаемой задержкой.

Прервать ручное ожидание

Запусти sleep 30 на переднем плане и нажми Ctrl+C. В обычном терминале это прерывает ожидание. Повторять пример с длительным интервалом для проверки не требуется.

Неполадки

2

Терминал пока не показывает приглашение

Команда переднего плана ещё выполняется. Дождись окончания или прерви её; отсутствие текста во время ожидания нормально. Само по себе оно не означает зависание оболочки.

Вместо задержки появилась ошибка

Проверь аргумент: единица времени записывается рядом с числом. Начни с sleep 1, затем сравни проблемный вариант со справкой установленной программы.

Опасно

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

Не завершай все процессы с именем sleep ради уборки учебного примера: чужая задержка может быть частью работающего сценария. Используй сохранённый PID и проверяй, что это всё ещё нужный экземпляр.

См. также

  • background-jobs — фоновые задания текущей оболочки.
  • wait — ожидание завершения дочерней задачи.
  • processes — состояния, PID и сигналы.
Загрузка…