Bash script как спать в новом процессе, тогда выполните команду
Итак, мне было интересно, есть ли команда bash, которая позволяет мне разворачивать процесс, который спит в течение нескольких секунд, а затем выполняет команду.
Вот пример:
sleep 30 'echo executing...' &
^ Это на самом деле не работает (потому что команда sleep принимает только временной аргумент), но есть ли что-то, что могло бы сделать что-то вроде этого? Итак, в основном, команда sleep, которая принимает аргумент времени и что-то выполнение, когда интервал завершен? Я хочу, чтобы он мог развить его в другой процесс, а затем продолжить обработку оболочки script.
Кроме того, я знаю, что могу написать простой script, который делает это, но из-за некоторых ограничений ситуации (я фактически передаю это через вызов ssh), я бы предпочел не делать этого.
Ответы
Ответ 1
Вы можете вызвать другую оболочку в фоновом режиме и заставить ее делать то, что вы хотите:
bash -c 'sleep 30; do-whatever-else' &
Интервал по умолчанию для сна находится в секундах, поэтому вышеупомянутое будет спать в течение 30 секунд. Вы можете указать другие интервалы: 30m
в течение 30 минут или 1h
в течение 1 часа или 3d
в течение 3 дней.
Ответ 2
Вы можете сделать
(sleep 30 && command ...)&
Использование &&
безопаснее, чем ;
, потому что оно гарантирует, что command ...
будет работать, только если таймер сна истекает.