小编Bra*_*rad的帖子

生成多个并行 wget 并将结果存储在 bash 数组中,以便在所有 wget 完成后打印出来

我在我自己的网站上有一长串 url,列在一个回车分隔的文本文件中。所以例如:

  • http://www.mysite.com/url1.html
  • http://www.mysite.com/url2.html
  • http://www.mysite.com/url3.html

我需要生成许多并行 wget 来两次访问每个 URL,检查并检索特定的标头,然后将结果保存在一个数组中,我想在一个不错的报告中输出该数组。

通过使用以下 xargs 命令,我获得了我想要的部分内容:

xargs -x -P 20 -n 1 wget --server-response -q -O - --delete-after<./urls.txt 2>&1 | grep Caching
Run Code Online (Sandbox Code Playgroud)

问题是如何运行此命令两次并存储以下内容:

  1. 网址命中
  2. 针对缓存标头的 grep 的第一个结果
  3. 针对缓存标头的 grep 的第二个结果

所以输出应该是这样的:

=====================================================
http:/www.mysite.com/url1.html
=====================================================
First Hit: Caching: MISS
Second Hit: Caching: HIT

=====================================================
http:/www.mysite.com/url2.html
=====================================================
First Hit: Caching: MISS
Second Hit: Caching: HIT
Run Code Online (Sandbox Code Playgroud)

等等。

只要标题与 URL 相关联,URLS 出现的顺序就不一定是一个问题。

由于 URL 的数量,我需要并行而不是串行访问多个 URL,否则将花费太长时间。

诀窍是如何获得多个并行 wget 并以有意义的方式存储结果。如果有更合乎逻辑的方法(也许写入日志文件?)

有没有 bash 大师对我如何继续提出任何建议?

linux bash wget array xargs

5
推荐指数
1
解决办法
1831
查看次数

标签 统计

array ×1

bash ×1

linux ×1

wget ×1

xargs ×1