shell后台限制多并发控制后台任务强度进行文件拷贝

2022-05-05  本文已影响0人  倪桦

Linux后台限制多并发控制后台任务强度进行文件拷贝

type=$1 #脚本外部传入内容
function main() #主要执行任务
{
    fileName=$1 ; dir=$2 ; type=$3 #接受函数传入
    mkdir -p ./$type/$fileName
    cp -r ${dir}/* ./$type/$fileName >>./$type/log.txt 2>&1 
    if [ $? -eq 0 ]; then
        echo -e "${fileName}\tFinished copy" >>./$type/workSuccess.txt
    else
        echo -e "${fileName}\tFaild copy" >>./$type/workFaild.txt
    fi
}

while read line 
do
{
    joblist=($(jobs -p))             #查询后台当前命令执行的任务数
    while (( ${#joblist[*]} >= 20 )) #后台同时进行任务数限制
    do
    {
        sleep 10
        joblist=($(jobs -p))    
    }
    done
    
    var=(${line//\\t/ })  #字符串按\t拆分
    fileName=${var[0]} ; dir=${var[2]}
    main ${fileName} ${dir} ${type} & #命令提交到后台
}
done < ./workList.txt  #行读取任务详细
上一篇下一篇

猜你喜欢

热点阅读