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 ... будет работать, только если таймер сна истекает.