【问题标题】:Run Process in background and ensure whether all got processed在后台运行进程并确保是否全部处理完毕
【发布时间】:2014-10-12 20:34:31
【问题描述】:

我试图逐行读取文件并调用基于我传递的参数执行的子进程。 我们调用的进程被设计为并行运行。所以我们计划将文件的所有行发送到子进程并在后台运行它。 是否可以让我的调用进程等待或了解是否所有后台进程都已成功处理?

这就是我使用 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

【问题讨论】:

  • 声明result=$?处于特殊位置。您要为哪个进程捕获退出代码?

标签: bash shell unix process


【解决方案1】:

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

wait

在循环之后。见http://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多