Вот простой пример использования wait
.
Запустить несколько процессов:
$ sleep 10 &
$ sleep 10 &
$ sleep 20 &
$ sleep 20 &
Затем дождитесь их с помощью команды wait
:
$ wait < <(jobs -p)
Или просто wait
(без аргументов) для всех.
Это будет ожидать завершения всех заданий в фоновом режиме.
Если указана опция -n
, ожидает завершения следующего задания и возвращает статус завершения.
См .: help wait
и help jobs
для синтаксиса.
Однако недостатком является то, что это вернет только состояние последнего идентификатора, поэтому вам нужно проверить состояние каждого подпроцесса и сохранить его в переменной.
Или сделайте свою функцию вычисления, чтобы создать какой-либо файл при ошибке (пустой или с журналом сбоев), а затем проверить этот файл, если он существует, например,
$ sleep 20 && true || tee fail &
$ sleep 20 && false || tee fail &
$ wait < <(jobs -p)
$ test -f fail && echo Calculation failed.