2017-03-18 67 views
-5

那麼我想檢查Linux中的100000k + url。檢查10000K +網址

關於那些鏈接,這些實際上是我的android的OTA [zip]。

在這些鏈接中只有一個有效的鏈接休息給404錯誤。

那麼如何在linux服務器或web服務器[apache]中檢查更少時間段內的所有鏈接。網址

結構:

http://link.com/updateOTA_1.zip

http://link.com/updateOTA_2.zip

http://link.com/updateOTA_999999999.zip

好吧是我的嘗試

我做了這個腳本,但它真的很慢。 http://pastebin.com/KVxnzttA我也增加了螺紋高達500,然後我的服務器崩潰:

#!/bin/bash 
for a in {1487054155500..1487055000000} 
do 
    if [ $((a%50)) = 0 ] 
    then 
    curl -s -I http://link.com/updateOTA_$((a)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+1)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+2)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+3)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+4)).zip | head -n1 & 
... 
    curl -s -I http://link.com/updateOTA_$((a+49)).zip | head -n1 & 
    curl -s -I http://link.com/updateOTA_$((a+50)).zip | head -n1 
    wait 
    echo "$((a))" 
    fi 
done 

我試着用aria2,但aria2最高線是16,所以再次失敗。

嘗試一些在線工具,但他們給我100url的限制。

+1

你嘗試過這麼遠嗎? –

+0

爲什麼人們給出負數..... – TonyStark

+0

@TomUdding我試過aria2c – TonyStark

回答

1

正在運行curl 100,000+次會變慢。而是將批量URL寫入curl的單個實例,以減少啓動curl的開銷。

# This loop doesn't require pre-generating a list of a million integers 
for ((a=1487054155500; a<=1487055000000; a+=50)); do 
    for(k=0; k<50; k++)); do 
    printf 'url = %s\n' "http://link.com/updateOTA_$((a+k)).zip" 
    done | curl -I -K - -w 'result: %{http_code} %{url_effective}' | grep -F 'result:' > batch-$a.txt 
done 

-w選項用於產生輸出每個URL其結果相關聯地,你應該希望如此。

+0

謝謝。獲取2錯誤>>警告:錯誤嘗試從'-w'文件讀配置 >> curl:(6)無法解析主機:結果 – TonyStark

+0

啊,小錯字;我忘記了'-K'的'-'參數來告訴它使用哪個配置文件(標準輸入)。 – chepner

+0

'curl:unknown --write-out變量:'http_status''仍然出錯 – TonyStark

0

但是我發現解決方案使用aria2c

現在掃描每分鐘7K網址。

感謝所有

aria2c -i url -s16 -x16 --max-concurrent-downloads=1000