Я запускаю оболочки, каскадирующие 3 оболочки. Концептуально так
outside.ksh <parameters>
middle.ksh <parameter>
inner1.ksh <para> > Log 2>&1 &
inner2.ksh <para> > log 2>&1 &
inner3.ksh <para> > log 2>&1 &
sleep nnn
innern.ksh <para> > log 2>&1 &
Спящие управляющие # потоки запускаются параллельно. Насколько я понимаю, каждая внутренняя оболочка запускается независимо в фоновом режиме - если я использую ожидание вместо сна, ожидание просто ответит на последний блок потока 1 (inner3). Более ранние 2 могут все еще работать, но могут ли они фактически «подождать» завершения всех этих фоновых процессов?
Второй вопрос, который у меня есть, касается кода возврата. Каждая из этих внутренних оболочек будет возвращать свои коды выхода ($?) при запросе, но я бы хотел, чтобы средняя оболочка возвращала 1 окончательный код, если ВСЕ они выполнены успешно, и не ноль, если ЛЮБОЙ из них не удался. Насколько я понимаю, код возврата middle.ksh снова совпадает с последней запущенной внутренней оболочкой. Как мне заставить его учитывать все статусы возврата inner.ksh
wait
без аргументов, он ожидает завершения всех фоновых процессов, а не только последнего. - person Barmar   schedule 28.01.2014