用xargs配合wget实现并发下载需确保url每行一个,执行cat urls.txt|xargs -n 1 -p 4 wget -q即可启动4个并发任务,其中-n 1保证每次传单个url,-p 4控制并发数,-q静默避免日志混乱;生产环境建议添加--tries=3、--timeout=30和-p ./downloads提升稳定性。

用 xargs 配合 wget 实现并发下载,核心是把 URL 列表逐行喂给 wget,并控制并发数,避免日志混乱和资源挤占。
确保 URL 文件格式正确
URL 必须每行一个,不能有空行、多余空格或注释。例如:
urls.txt 内容应为:
https://example.com/file1.ziphttps://example.com/file2.pdfhttps://example.com/image.jpg
基础并发命令(推荐写法)
执行以下命令即可启动 4 个并发下载任务:
cat urls.txt | xargs -n 1 -P 4 wget -q
-
-n 1:每次只传入一个 URL 给wget,防止多个 URL 被拼成一条命令出错 -
-P 4:最多同时运行 4 个wget进程 -
-q:静默模式,屏蔽进度条和成功提示;否则多个进程输出混在一起,失败时无法定位哪个 URL 出问题
增强健壮性的补充建议
生产环境或批量任务中,可加这些参数提升稳定性:
- 加
--tries=3让单个下载失败时重试 3 次 - 加
--timeout=30防止单个请求卡死太久 - 加
-P ./downloads指定统一保存目录(注意:这个-P是wget的参数,和前面xargs的-P不冲突) - 完整示例:
cat urls.txt | xargs -n 1 -P 4 wget -q --tries=3 --timeout=30 -P ./downloads
检查下载结果与错误
wget -q 不输出成功信息,但失败会打印错误到终端(因为 -q 只抑制常规日志,不屏蔽 stderr)。下载结束后可快速验证:
- 看文件数量:
ls ./downloads | wc -l - 查失败记录:
cat urls.txt | xargs -n 1 -P 4 wget -nv 2>&1 | grep "failed\|ERROR"(临时去掉-q,用-nv显示简要日志,并捕获错误)











