shell模拟多进程(1)

测试wget xxxxxxx 只有1M/s的速度 如果同时启动n个wget xxxxx基本能打到nM/s的速度。由于”AreaObject ClassObject FullTextObject FundObject MediaObject OrganObject“几个子目录下文件总计都不大 加起来也只有4~5G 因此这几个目录使用wget -m -np -c -nH $name/ ;下载而其他几个目录 先把文件整理成url列表 然后以wget -c -i /url1的方式来下载。shell 以{}&来模拟一个进程因此:

################以下是脚本##############################!/bin/bash#file /usr/local/data/VipProcessData/wget.shbase=/usr/local/data/ #定义基本保存路径dir=”AreaObject ClassObject FullTextObject FundObject MediaObject OrganObject” 定义需要使用wget -m -np -c -nH 来下载的目录名for name in $dirdo{cd “$base”wget -m -np -c -nH $name/}& #实际循环启动了6个后台进程执行wget -m -np -c -nH $name/donewait #等待进程执行完成echo “finshed the data AreaObject ClassObject FullTextObject FundObject MediaObject OrganObject downloading”{cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject01}& #启动1个进程执行wget -c -i /usr/local/wget/SubjectObject01{cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject02}& #启动1个进程执行wget -c -i /usr/local/wget/SubjectObject02{cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject03}& # 启动1个进程执行wget -c -i /usr/local/wget/SubjectObject03{cd /usr/local/data/VipProcessData/BasicObject/SubjectObject && wget -c -i /usr/local/wget/SubjectObject04}& # 启动1个进程执行wget -c -i /usr/local/wget/SubjectObject04{cd /usr/local/data/VipProcessData/BasicObject/WriterObject && wget -c -i /usr/local/wget/WriterObject01}& # 启动1个进程执行wget -c -i /usr/local/wget/SubjectObject05wait 等待上述5个进程执行完echo “finshed thr data of WriterObject and SubjectObject”{cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject01}& #启动1个进程执行wget{cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject02}& #启动1个进程执行wget{cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject03}& #启动1个进程执行wget{cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject04}& #启动1个进程执行wget{cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject05}& #启动1个进程执行wget{cd /usr/local/data/VipProcessData/BasicObject/TitleObject && nohup wget -c -i /usr/local/wget/TitleObject06}& #启动1个进程执行wgetwait 等待上述6个进程执行完echo “finshed thr data of TitleObject”echo ”all data download finshed“##############以上是脚本#############################

可以看出 脚本先后同时启动n个进程,待进程全部结束后再启动n个进程。缺点,不能保障n个进程每次都能同时或者接近同时完成。因此实际上 上述脚本理论上最大的下载速度是6m/s (最开始同时启动了6个进程)之后就再也没有过同时达到6m/s的下载速度了。目录遍历

dir=/usr/local/datafor name in `ls $dir`do{cd $dir/$name…….}

,一个背包,几本书,所有喜欢的歌,

shell模拟多进程(1)

相关文章:

你感兴趣的文章:

标签云: