Linux模拟多线程拷贝

Posted castielangel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux模拟多线程拷贝相关的知识,希望对你有一定的参考价值。

#!/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模拟多线程拷贝的主要内容,如果未能解决你的问题,请参考以下文章

C语言 用定时器 模拟多线程

Linux下模拟多线程的并发并发shell脚本

多线程下的fork问题(模拟与解决)

多线程下的fork问题(模拟与解决)

多线程下的fork问题(模拟与解决)

Linux下多线程模拟停车场停车