Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 等待子shell进程完成大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

processUsageFile() { #sdate=`pin_virtual_time | awk -F" " '{print $3}'`; #Get all new files to be loaded to brm staging data. count=`ls ${PRE_STAGING}/TWN* 2>/dev/null|grep -v reprocess|
processUsageFile()
{
    #sdate=`pin_virtual_time  | awk -F" " '{print $3}'`;

    #Get all new files to be loaded to brm staging data.
    count=`ls ${PRE_STAGING}/TWN* 2>/dev/null|grep -v reprocess|wc -l`
    if [ $count -ne 0 ];then
        # Fork subsHell
        (./efx_omc_brm_rpt_process.sh -t TWN & )&
        exitOnError
    fi

    #Process Rapid Report files
    count=`ls $PRE_STAGING/RR* 2>/dev/null|grep -v  reprocess|wc -l`
    if [ $count -ne 0 ];then
        (./efx_omc_brm_rpt_process.sh -t RR &)&
        exitOnError
    fi
...
...
}
#Reprocessing. Process the reprocessed files.
#This method updates the records in the BRM staging table.
reprocessingUsageFile()
{
    #Process TWN fulfillment reprocess files
    count=`ls $PRE_STAGING/TWN*reprocess* 2>/dev/null|wc -l`
    if [ $count -ne 0 ];then
        # Fork subsHell
        (./efx_omc_brm_rpt_reprocess.sh -t TWN & ) &
    fi

    #Process Rapid Report files
    count=`ls $PRE_STAGING/RR*reprocess* 2>/dev/null|wc -l`
    if [ $count -ne 0 ];then
        (./efx_omc_brm_rpt_reprocess.sh -t RR &) &
    fi
...
...
}

#Pre processing
PreProcessing

# Start processing usage files.
processUsageFile

processErrFile

上述代码的思想是做并行处理.所有方法调用多个子sHell并从tty中分离.我想知道是否有办法等待前两个方法先完成执行然后再运行最后一个方法.

等待PID在某种程度上是不准确的.仍然在尝试…

waitPids() {
echo "TesTing $pids -- ${#pids[@]}"
    while [ ${#pids[@]} -ne 0 ]; do
            local range=$(eval echo {0..$((${#pids[@]}-1))})
            local i
            for i in $range; do
                if ! kill -0 ${pids[$i]} 2> /dev/null; then
                    echo "Done -- ${pids[$i]}"
                     unset pids[$i]
                fi
            done
            pids=("${pids[@]}") 
            sleep 1
        done
    }
@H_197_29@解决方法
似乎主要的问题是,你正在使用分离的子壳.

也许最简单的解决方案是使用不同的机制来分离子sHell,这样你就可以使用wait.

例如通过nohup

nohup ./process1 &
 nohup ./process2 &
 wait

大佬总结

以上是大佬教程为你收集整理的linux – 等待子shell进程完成全部内容,希望文章能够帮你解决linux – 等待子shell进程完成所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。