Я следующий Баш скрипт, мы можем назвать его script1.sh
:Как проверить, жив ли фоновая работа? (Баш)
#!/bin/bash
exec ./script2.sh &
sleep 5
if job1 is alive then #<--- this line is pseudo-code!
exec ./script3.sh &
wait
fi
Как можно видеть, сценарий выполняет script2.sh
в качестве фонового задания, а затем ждет 5 секунд (так script2.sh
может сделать некоторые инициализации материал). Если инициализация завершается успешно, то задание script2.sh
все равно будет живым, и в этом случае я также хочу запустить script3.sh
одновременно; если нет, я просто хочу уйти.
Однако я не знаю, как проверить, жива ли первая работа, а следовательно, строка псевдокода. Итак, что должно быть на его месте?
Запуск exec не будет делать то, что вы думаете. Он заменит текущий процесс новым процессом; более поздние строки в вашем скрипте не будут достигнуты. –