Ответ 1
& запускает фоновое задание, поэтому
sleep 60 && echo "A" &
Как я могу создать процесс после задержки в оболочке script? Я хочу, чтобы команда начиналась через 60 секунд после запуска script, но я хочу продолжить работу с остальной частью script, не дожидаясь, наконец, 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
Мне нужно сделать все это за один script. То есть. не создавая второй script, который вызывается из первой оболочки script.
& запускает фоновое задание, поэтому
sleep 60 && echo "A" &
Небольшое расширение остальных ответов - это ожидание фоновых команд в конце script.
#!/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
Не могу попробовать прямо сейчас, но
(sleep 60 && echo "A")&
должен выполнить работу
Альтернатива:
echo 'echo "A"' | at now + 1 min
Если каким-либо образом ОС не работает в указанное время, команда будет выполнена, как только она станет доступной.