从命令行多线程批量下载URL


3

我有100,000个小文件网址可供下载。想使用10个线程和流水线是必须的。我将结果连接到一个文件。目前的做法是:

cat URLS | xargs -P5 -- curl >> OUTPUT

是否有更好的选择可以显示整个操作的进度?必须从命令行工作。


“想要使用10个线程,并且必须使用流水线操作。我将结果连接到一个文件。”所以订单没关系?
Bobby

1
使用 GNU并行 ,它甚至会保持输出的顺序。如果你相应地标记你的问题,你可能会很幸运 作者 可能会进入;-)
Adrian Frühwirth

订单不是问题。标记为gnu-parallel好主意。是否有可能使用并行并仍然在卷曲中获得流水线?
William Entriken

当你这样做时,难道你没有混合文件吗?除非您的Web服务器是单线程的,否则我不会看到如何避免两个进程同时写入您的输出文件。
rici

对我来说,莽撞,混乱都不是问题。
William Entriken

Answers:


3
cat URLS | parallel -k -P10 curl >> OUTPUT

或者如果进展更重要:

cat URLS | parallel -k -P10 --eta curl >> OUTPUT

要么:

cat URLS | parallel -k -P10 --progress curl >> OUTPUT

10秒安装将尝试进行完整安装;如果 失败,个人装置;如果失败了,那就是最小的 安装。

wget -O - pi.dk/3 | sh

观看介绍视频以获得快速介绍: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1


我试过这个安装程序 wget -O - pi.dk/3 | sh 但似乎已经得到了一些并行的蹩脚借口,实际上什么也没做: parallel [OPTIONS] command -- arguments / for each argument, run command with argument, in parallel
William Entriken

1
啊,我必须先卸载moreutils。 apt-get remove moreutils
William Entriken
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.