文件 links.txt 中有大约 10 个链接。我通过下载它们
cat links.txt | xargs -i --max-procs=4 bash -c "wget {}"
我想重复这样做
while :
do
cat links.txt | xargs -i --max-procs=4 bash -c "wget {}"
done
在 while 循环的下一次迭代之前,它会等待所有子进程完成。但当有可用线程时,我想继续下载(从文件开头获取 url)。怎么做?也许我可以制作无限的弦管?
答案1
如果您yes
接受字符串参数:
yes links.txt | xargs cat | xargs -n1 --max-procs=4 wget
cat
运行一个perllinks.txt
或每个链接运行一个perl 是没有意义的bash
(除非您希望将 的 行links.txt
解释为 shell 代码,如http://$host$path
或http://evil;rm -rf /
)。
如果文件足够小,您还可以执行以下操作:
yes -- "$(cat links.txt)" | xargs -n1 -P4 wget