Как сделать паузу в shell-скрипте на одну секунду перед продолжением?
Я нашел информацию только о том, как ожидать ввода пользователя. Однако я хочу приостановить выполнение программы, чтобы мой цикл while true
не перегружал компьютер.
Я пробовал использовать команду pause(1)
, но получаю ошибку: -bash: syntax error near unexpected token '1'
. Как это можно сделать?
5 ответ(ов)
Вы можете использовать команду sleep
для приостановки выполнения программы на заданный промежуток времени. Примеры использования:
sleep .5 # Ожидание 0.5 секунды.
sleep 5 # Ожидание 5 секунд.
sleep 5s # Ожидание 5 секунд.
sleep 5m # Ожидание 5 минут.
sleep 5h # Ожидание 5 часов.
sleep 5d # Ожидание 5 дней.
Также можно использовать дробные значения при указании временной единицы; например, sleep 1.5s
для ожидания 1.5 секунды.
В Python, чтобы использовать функцию sleep
, вам необходимо импортировать модуль time
:
import time
time.sleep(1)
или можно использовать более компактный вариант:
from time import sleep
sleep(1)
В Shell-скрипте всё гораздо проще, достаточно просто написать:
sleep 1
Это выполнит команду sleep
, которая обычно расположена по пути /bin/sleep
.
Вы можете использовать последовательность команд с sleep
, как в вашем примере, чтобы выполнить задержки между командами. В приведённом вами коде происходит следующее:
sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..
Этот скрипт сначала ждёт 5 секунд, затем переходит в директорию /var/www/html
, выполняет команду git pull
, после чего снова ждет 3 секунды, и возвращается в предыдущую директорию.
Если вы хотите выполнить несколько команд с интервалами между ними, используйте конструкцию &&
, которая запускает следующую команду только в случае успешного выполнения предыдущей. Таким образом, ваш код работает корректно, обеспечивая необходимую последовательность операций с паузами между ними.
В macOS команда sleep
используется для приостановки выполнения на определенное количество секунд. Однако, в отличие от других версий Unix, она не поддерживает ввод времени в минутах и т.д., принимая только секунды. Поэтому, чтобы приостановить выполнение на две минуты, выполните следующую команду:
sleep 120
Я понимаю, что я немного опоздал с ответом, но вы также можете воспользоваться командой sleep
и передать нужное время. Например, если я хочу подождать 3 секунды, я могу сделать так:
/bin/sleep 3
А если нужно подождать 4 секунды, это будет выглядеть так:
/bin/sleep 4
Что означает "2>&1"?
Как установить переменную на вывод команды в Bash?
Разница между sh и Bash
Bash инструмент для получения n-й строки из файла
Как использовать 'grep' для непрерывного потока?