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 #行读取任务详细
网友评论