从Shell脚本并行处理

时间:2018-08-09 13:06:59

标签: shell unix parallel-processing

我需要从unix shell脚本中的并行线程中调用Java程序,并等待所有线程完成。然后,应捕获每个线程的返回状态(1或0)。如果所有并行线程都成功,则Unix脚本将返回SUCCESS,否则 至少有一个线程错误,然后返回FAIL。 我在Google上发现了此代码段,它与我正在寻找的代码非常相关。

    for count in {1..10}
    do
        call_process $count $runid &
        JPID="$JPID $!"
    done
    for pid in $JPID; do
        wait $pid || let 'RESULT+=1'
        echo "RESULT - $RESULT"
    done

function call_process {
    java -Djava.security.egd=file:/dev/urandom -Xmx8192M -Dfile.encoding=ISO-8859-1 com.load.MainProg $1 $2
}

但是这里没有捕获Java进程的结果。是否可以捕获每个进程ID的Java返回状态?

1 个答案:

答案 0 :(得分:1)

要从shell进行并行处理,请使用所有主要发行版中均提供的GNU Parallel。选中https://stackoverflow.com/a/6789085/2235381https://www.gnu.org/software/parallel/