我有一个我想下载的网址列表
n=1
end=`cat done1 |wc -l`
while [ $n -lt $end ]
do
nextUrls=`sed -n "${n}p" < done1`
wget -N nH --random-wait -t 3 -a download.log -A$1 $nextUrls
let "n++"
done
我想用管道做得更快但是如果我这样做
wget -N nH --random-wait -t 3 -a download.log -A$1 $nextUrls &
我的ram填满并完全阻止我的电脑。 Any1知道如何将同时创建的管道限制为10个?
答案 0 :(得分:4)
您没有创建管道(|
),而是在创建后台进程(&
)。每当while
执行其正文时,您都会创建一个新的wget
进程并且不要等待它退出,这可能会创建批次(取决于end
的值) <{1}}的进程非常快。可以按顺序执行(删除wget
),也可以尝试executing n processes in parallel and wait for them。
&
:你可以这样做:
cat
答案 1 :(得分:1)
我有一个我要下载的网址列表...我希望能更快地完成..
所以这是做到这一点的最短路径。以下命令从文件* txt_list_of_urls中包含的列表中下载URL,并行运行10个线程:
xargs -a txt_list_of_urls -P 10 -r -n 1 wget -nv