通过SHELL并发获下载数据

手头上有1万个URL , 尝试用迅雷下载, 结果放在列表中就挂了 ,与同事沟通cat + xargs 能快速实现 .  

 

具体代码如下:

#!/bin/bash
# getFile.sh
url=$1 fileName=$(echo $1 | awk -F'/' '{print $NF}') # echo ${fileName} if [ ! -f ${fileName} ] ; then
# 将图片保存在当前目录下
curl ${url} -o ${fileName} 

fi

 

urlList.txt 

http://n.sinaimg.cn/news/w105h70/20171204/_0cD-fypikwt6188396.jpg
http://n.sinaimg.cn/news/w105h70/20171204/lWeS-fypikwt6608399.jpg
http://n.sinaimg.cn/sports/transform/w105h70/20171204/W3fY-fypikwt6000765.jpg

 

执行调用:

cat urlList.txt | xargs -P3 -n1  bash getFile.sh

其中-P3 代表3个并发

 

检查执行效果 :

ps -ef | grep curl -c

上面是3个并打, 显示为4  ,是应为 grep curl 也计算在内了

 

缺点:

对于获取失败的数据,没实现记录及重新获取. 

posted @ 2017-12-04 13:53  伟成  阅读(415)  评论(0)    收藏  举报