如何同时运行多个Wget命令实现批量并行下载?
多线程批量下载解决方案
你可以通过以下两种常用方式实现并行下载,无需修改原有list.txt结构:
方案1:使用xargs内置并行能力(系统默认自带,无需额外安装)
直接调用xargs的-P参数指定同时运行的任务数即可,示例命令:
cat list.txt | xargs -n 2 -P 10 wget -O
参数说明:
-n 2:每次读取2个参数(对应每行的URL和目标文件名)传递给wget-P 10:同时运行10个下载进程,你可以根据自身带宽和目标服务器限制调整数值,建议不要超过20,避免IP被服务器临时封禁
如果你的文件名包含空格,需要提前把list.txt中的文件名用引号包裹,或者改用下面的GNU Parallel方案。
方案2:使用GNU Parallel(功能更灵活,适配复杂场景)
如果系统未预装,可以先通过对应包管理器安装(Debian/Ubuntu执行apt install parallel,macOS执行brew install parallel),之后运行以下命令:
parallel -j 10 --colsep ' ' wget {1} -O {2} :::: list.txt
参数说明:
-j 10:指定同时运行10个下载任务--colsep ' ':指定空格作为列分隔符,自动将每行内容分配到{1}(URL)、{2}(目标文件名)两个占位符- 该方案天然支持带空格的文件名、断点续传扩展、下载进度全局统计等额外需求
额外优化建议
- 并行数不要设置过高,超过带宽上限后新增进程不会提升下载速度,反而会因为连接竞争拉高下载失败率
- 如果需要支持断点续传,可以给wget添加
-c参数,下载中断后重新执行命令不会重复下载已完成的文件
内容的提问来源于stack exchange,提问作者M9A
相关产品推荐
相关产品推荐

