在后台运行Process并确保是否所有处理完毕

时间:2014-10-12 20:34:31

标签: bash shell unix process

我试图逐行读取文件并调用基于参数i传递执行的子过程。 我们调用的流程设计为在并行中运行。所以我们计划将文件的所有行发送到子进程并在后台运行它。 是否有一个选项可以让我的调用进程等待或者知道是否所有后台进程都已成功处理?

这就是我使用ShellScripting调用该子进程的方法。

while read -r name age empno ; do
    echo $EmpName $EmpAge $EmpNumber
    ./run.sh RUN_EMP -a $EmpName -b $EmpAge -c $EmpNumber &  
    result=$?
done < "$File_Employee" >  /logs/Emp_`date +%Y%m%d%H%M`.log

1 个答案:

答案 0 :(得分:1)

假设您还没有在bash脚本中启动任何其他进程(在循环之前),等待所有后台作业终止的最简单方法就是添加

wait
循环后

。请参阅http://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html