【发布时间】:2014-01-30 18:29:52
【问题描述】:
我有一个这样的外壳
middle.ksh <parameter>
inner1.ksh <para> > Log 2>&1 &
p1=$!
inner2.ksh <para> > log 2>&1 &
p2=$!
inner3.ksh <para> > log 2>&1 &
p2=$!
sleep nnn
inner4.ksh <para> > log 2>&1 & /# L1last process fired
p2=$!
rc=$? /# I am checking the rc for the last process
wait
我想做这样的事情
--找出是否所有在后台触发的进程都已完成。
- 当所有都完成后,我希望 middle.ksh 退出并返回最后一个子进程的返回码 - 即上面的 inner4.ksh,例如换句话说 - 如果它在其中触发的所有进程都成功(内部 1..4)&& inner4.ksh 成功,我想说 middle.ksh 运行良好。
如果 inner4.ksh 失败 - middle.ksh 失败。
现在我可以收集每个 PID 并说wait p1 p2 p3 etc
问题是所有这些子 shell 都是在包装器(middle.ksh)中动态编写的,所以我不知道有多少 inner.ksh 可以是 10 -可以是 100
可以轻松完成吗?或者我错过了什么。
太棒了
【问题讨论】:
标签: linux shell background pid exit-code