我正在尝试使用 cURL 下载 URL 列表,每个进程有多个 URL。下面的方法有效,但如果参数xargs -L
大于 1,它会返回一个奇怪的结果。我想启动 8 个进程,每个进程获取 4 个 URL,这样就不会生成太多 URL。
curl url1...url4
cat urls.txt | xargs -n 1 -L 4 -P 8 curl -I -s -o /dev/null -w "%{http_code} %{url_effective}\n"
结果相当混乱。
503 http://somewebsite.txt
404 http://somewebsite.txt
503 http://somewebsite.txt
404 http://somewebsite.txt
HTTP/1.1 404 Not Found
Server: nginx
Date: Thu, 24 Nov 2016 10:11:36 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Access-Control-Allow-Origin: *
404 http://somewebsite.txt
HTTP/1.1 404 Not Found
Server: nginx
Date: Thu, 24 Nov 2016 10:11:36 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Access-Control-Allow-Origin: *
404 http://somewebsite.txt
答案1
这看起来不像是客户端的问题。这看起来像是服务器的问题,例如 jsp 无法编译。
您可以调查以curl -vvv
获取更多信息。
另外,当问题解决后,您可能希望使用xargs -n 4
“-n 1 -L 4”。