shell 模拟多进程(2)中原本打算把任务存放在数组中的;由于在a_sub中直接饮用数组变量来执行未成功,换成了17个函数来存放

参照 http://skybug.blog.51cto.com/132577/1337783 如何将shell的变量当命令执行 将脚本修改为

########################以下是脚本#####################
#!/bin/bash
#filename mwget.sh
base=/usr/local/data/
thread=6
task[0]="cd $base && wget -m -np  -c -nH  http://x.x.x.x/VipProcessData/BasicObject/AreaObject/"
task[1]="cd $base && wget -m -np  -c -nH  http://x.x.x.x/VipProcessData/BasicObject/ClassObject/"
task[2]="cd $base && wget -m -np  -c -nH  http://x.x.x.x/VipProcessData/BasicObject/FullTextObject/"
task[3]="cd $base && wget -m -np  -c -nH  http://x.x.x.x/VipProcessData/BasicObject/FundObject/"
task[4]="cd $base && wget -m -np  -c -nH  http://x.x.x.x/VipProcessData/BasicObject/MediaObject/"
task[5]="cd $base && wget -m -np  -c -nH  http://x.x.x.x/VipProcessData/BasicObject/OrganObject/"
task[6]="cd /usr/local/data/VipProcessData/BasicObject/SubjectObject  &&  wget -c -i /usr/local/data/wget/SubjectObject01"
task[7]="cd /usr/local/data/VipProcessData/BasicObject/SubjectObject  &&  wget -c -i /usr/local/data/wget/SubjectObject02"
task[8]="cd /usr/local/data/VipProcessData/BasicObject/SubjectObject  &&  wget -c -i /usr/local/data/wget/SubjectObject03"
task[9]="cd /usr/local/data/VipProcessData/BasicObject/SubjectObject  &&  wget -c -i /usr/local/data/wget/SubjectObject04"
task[10]="cd /usr/local/data/VipProcessData/BasicObject/WriterObject  &&  wget -c -i /usr/local/data/wget/WriterObject01"
task[11]="cd /usr/local/data/VipProcessData/BasicObject/TitleObject  &&   wget -c -i /usr/local/data/wget/TitleObject01"
task[12]="cd /usr/local/data/VipProcessData/BasicObject/TitleObject  &&   wget -c -i /usr/local/data/wget/TitleObject02"
task[13]="cd /usr/local/data/VipProcessData/BasicObject/TitleObject  &&   wget -c -i /usr/local/data/wget/TitleObject03"
task[14]="cd /usr/local/data/VipProcessData/BasicObject/TitleObject  &&   wget -c -i /usr/local/data/wget/TitleObject04"
task[15]="cd /usr/local/data/VipProcessData/BasicObject/TitleObject  &&   wget -c -i /usr/local/data/wget/TitleObject05"
task[16]="cd /usr/local/data/VipProcessData/BasicObject/TitleObject  &&   wget -c -i /usr/local/data/wget/TitleObject06"
function a_sub() { # 此处定义一个函数,(子进程)
echo ${task[i]} | awk '{run=$0;system(run)}'  #把task[i]中的命令重定向到awk中用system()函数调用执行
echo "start....... ${task[i]}"
}
tmp_fifofile="/tmp/$.fifo"
mkfifo $tmp_fifofile      # 新建一个fifo类型的文件
exec 6<>$tmp_fifofile      # 将fd6指向fifo类型
rm $tmp_fifofile
for ((i=0;i<$thread;i++));do
echo
done >&6 # 事实上就是在fd6中放置了$thread个回车符
date_start=$(date +%s)
for  ((i=0;i<17;i++));do
read  -u6 #每启动一个子进程就在fifo中删除一个回车
{
a_sub && {
echo "${task[i]} finshed"
} ||{
echo "error"
}
echo >&6
}&
done
wait
exec 6>&-
date_stop=$(date +%s)
echo "download finshed ;and all run $((date_stop-date_start)) sec"
exit 0

转载于:https://blog.51cto.com/skybug/1337789

shell 模拟多进程(3)相关推荐

  1. 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据...

    1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...

  2. shell模拟php多进程从redis获取数据(多个redis实例)

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  3. shell模拟php多进程从redis获取数据(一个库多个key值)

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  4. shell模拟php多进程从redis获取数据

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  5. shell模拟php多进程从redis获取数据(多个库)

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  6. appium+python自动化-adb shell模拟点击事件(input tap)

    前言 appium有时候定位一个元素很难定位到,或者说明明定位到这个元素了,却无法点击,这个时候该怎么办呢? 求助大神是没用的,点击不了就是点击不了,appium不是万能的,这个时候应该转换思路,换其 ...

  7. android 使用shell模拟触屏_android命令行模拟输入事件(文字、按键、触摸等)

    前言 通过adb shell input可以模拟android各种输入事件,比如文字.按键.触摸等等. adb shell input Usage: input [] [...] The source ...

  8. adb shell 模拟鼠标导入通讯录

    1.下载adb shell http://adbshell.com/downloads/ 2.配置环境环境变量 3.查找正在打开的引用 单个设备 直接adb shell 多个设备 adb device ...

  9. shell模拟银行取款功能流程脚本

    文章目录 介绍 执行效果 脚本 普通版 优化版 介绍 模拟功能:登录.查询.提现.转账.存款.清屏.退出 登录次数限制:3次错误强制退出程序 登录用户1:zzp/123 登录用户2:cj/456 执行 ...

最新文章

  1. 使用Markdown写作
  2. python面试常见问题-Python面试中常见的40个问题
  3. SSDT表的遍历(源码)
  4. Java中随机数的原理,以及使用时的注意点
  5. php毕业设计遇到的问题,常见问题_php毕业设计_php课程设计_php大作业_原创作品下载网...
  6. 计算机硬盘到内存不足,内存不够硬盘来凑,怪不得电脑卡!
  7. 周鸿祎:比情怀更重要的硬件创业三定律
  8. Oracle学习系列1-7
  9. linux c 多进程,【linux下c语言服务器开发系列1】多进程处理多客户端的连接
  10. c++实现通讯录制作
  11. Ubuntu登陆不进去输入密码后黑屏又返回登陆界面
  12. Qt之Base64编解码
  13. 免费云服务器获取方法 云服务器购买
  14. linux 下MySQL本地安装mysql - u root - p 无法登入
  15. narwal无法连接机器人_ABB机器人驱动通讯连接不上故障维修方法
  16. Homebrew安装使用卸载
  17. 孙陶然:当机会降临到你头上时你必须去把握
  18. 关系型数据库理论基础阐释
  19. 如何把安卓系统刷成linux,废旧Android手机如何改造成Linux服务器?
  20. 七年级计算机下册ppt,初中七年级信息技术下册课件:《幸福之家初规划》

热门文章

  1. YOLO系列专题——YOLOv2理论篇
  2. 数据结构笔记(十二)-- 定长顺序结构的实现
  3. angular input_更快的Angular应用程序
  4. java的robot_Java中的Robot不执行命令
  5. mos管结电容等效模型_MOS管等效模型
  6. matlab中input输入多个数_python怎么一次输入两个数
  7. python从0开始学编程第三天第9讲_【原创笔记1】Python从0学起——Starting from 0 learning Python(The First Day)...
  8. java对excel加密_Java 加密、解密Excel文档
  9. c语言里有bool变量,C语言中有没有bool类型
  10. linux命令mount是什么,Linux命令——mount、umount