Можно надеяться использовать GNU Parallel и обработку ошибок.Общий пример:
parallel ::: ./processA ./processB ./processC
Конкретный пример ... здесь я запускаю 3 простых задания, каждое из которых заключено в одинарные кавычки, и настраиваю его на остановку после завершения или сбоя всех заданий:
parallel --halt soon,fail=100% ::: 'echo 0 && exit 0' 'echo 1 && exit 1' 'echo 2 && exit 2'
Вывод
0
1
parallel: This job failed:
echo 1 && exit 1
2
parallel: This job failed:
echo 2 && exit 2
По умолчанию он будет запускать N
заданий параллельно, где N
- это количество ядер вашего ЦП, если вы просто хотите, чтобы заданиячтобы запустить последовательно, используйте:
parallel -j 1 ...
Очевидно, что вы можете передать вывод через grep -c "This job failed"
для подсчета сбоев.