【发布时间】:2017-06-02 12:16:02
【问题描述】:
这是一个用于 HTTP 状态码的简单 bash 脚本
while read url
do
urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "${url}" --max-time 5 )
echo "$url $urlstatus" >> urlstatus.txt
done < $1
我正在从文本文件中读取 URL,但它一次只处理一个,花费太多时间,GNU 并行和 xargs 也一次处理一行(已测试)
如何同时处理 URL 进行处理以提高时间?换句话说,URL 文件的线程而不是 bash 命令(GNU 并行和 xargs 所做的)
Input file is txt file and lines are separated as
ABC.Com
Bcd.Com
Any.Google.Com
Something like this
【问题讨论】:
-
为什么不读取文件并为每个 URL 衍生不同的 nohup 脚本?
-
你能详细说明一下吗
-
究竟什么时间太长了?请举个例子。读取 10,000 个 URL 的
bash循环可能会在您的前 2-3 个curl命令之前完成,因此这不是瓶颈,也不值得优化。只需使用 GNU Parallel 运行curl命令。 -
实际上问题是并行处理多个命令而不是多个url
-
例如--- cat abc.txt | parallel -j100 --pipe /root/bash5.sh abc.txt 像正常的 bash 脚本执行一样一次处理一个 url
标签: bash curl libcurl xargs gnu-parallel