Сценарий оболочки, порождающий процесс после задержки

Как я могу породить процесс после задержки сценария оболочки? Я хочу, чтобы команда запустилась спустя 60 секунд после того, как сценарий запускается, но я хочу продолжать управлять остальной частью сценария без ожидающих 60 секунд сначала. Вот идея:

#!/bin/sh
# Echo A 60 seconds later, but without blocking the rest of the script
sleep 60 && echo "A"

echo "B"
echo "C"

Вывод должен быть

B
C
... 60 seconds later
A

Я должен быть в состоянии сделать это все в одном сценарии. Т.е. никакое создание второго сценария, который называют из первого сценария оболочки.

22
задан user27478 16 December 2009 в 14:40
поделиться

3 ответа

& запускает фоновое задание, поэтому

sleep 60 && echo "A" &
38
ответ дан 29 November 2019 в 04:06
поделиться

Небольшое расширение других ответов - дождаться фоновых команд в конце скрипта.

#!/bin/sh
# Echo A 60 seconds later, but without blocking the rest of the script

set -e

sleep 60 && echo "A" &
pid=$!

echo "B"
echo "C"

wait $pid
8
ответ дан 29 November 2019 в 04:06
поделиться

Не могу попробовать прямо сейчас но

(sleep 60 && echo "A") &

должен выполнить свою работу

7
ответ дан 29 November 2019 в 04:06
поделиться