码迷,mamicode.com
首页 > 编程语言 > 详细

Linux模拟多线程拷贝

时间:2018-03-08 18:57:47      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:pos   enum   ext   done   art   nbsp   end   jobs   amp   

#!/bin/sh
#日志文件
log_file=/data/threadcp.log

a=$(date +%H%M%S)
echo -e "startTime:\t$a"

#最大线程数
nParellel=4

#获取需拷贝文件数组
cd /data/testsrc
filelist=()
j=0
for file in $(ls *)
do
    filelist[j]=$file
    let "j++"    
done

#获取拷贝文件数
filenum=$(ls |wc -w)

aJobs=()

for ((nextJob = 0; nextJob < filenum; )); do
    for ((iJob = 0; iJob < nParellel; ++iJob)); do
        if [ $nextJob -eq $filenum ]; then
            break;
        fi
        if [ ! "${aJobs[iJob]}" ] || ! kill -0 ${aJobs[iJob]} 2> /dev/null; then
            {
                cp ${filelist[nextJob]} /data/extd
                echo "[$(date "+%F %T")]: ${filelist[nextJob]}" >> $log_file
#                echo "[$(date "+%F %T")]: ${nextJob}" >> $log_file
            } &
            let "nextJob++"
            aJobs[iJob]=$!
        fi
    done

    sleep .1

done

wait
b=$(date +%H%M%S)
echo -e "endTime:\t$b"

 

Linux模拟多线程拷贝

标签:pos   enum   ext   done   art   nbsp   end   jobs   amp   

原文地址:https://www.cnblogs.com/castielangel/p/8530205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!