Мне нужно проверить код ответа 1 миллиард (да с страницами «B»). Я прекрасно понимаю, что независимо от того, как я его перекручу, это займет много дней. У меня есть время.
Однако мой текущий скрипт, кажется, делает только 200 в секунду. Это недостаточно быстро.
mycurl() {
response=$(curl --write-out %{http_code} --silent --output /dev/null http://www.example.com/test/$1)
echo "$1"
if [ "$response" == "200" ]; then
echo "valid" > "enum/$1" | cat
fi
}
export -f mycurl
i=0
seq 1000000000 | parallel -j0 mycurl
У меня чувство parallel происходит не так быстро, как могло бы (т. Е. Ждать чего-то).
I нашли это, но я не уверен, как заставить его работать: https://www.gnu.org/software/parallel/sem.html
Как я могу оптимизировать свой скрипт?
Используйте --head (или -I) для извлечения только заголовков, а не заголовков и содержимого веб-страницы. В зависимости от размера веб-страниц это может снизить сетевой трафик.
Вы уже указали, что вывод должен быть отброшен, поэтому время не теряется, записывая его в файл. Поэтому единственное сокращение, которое это даст, - на стороне сервера и в сети. Сервер фактически не отправит страницу по сети, но она все равно может сгенерировать ее или извлечь из кеша.
Используйте --head (или -I) для извлечения только заголовков, а не заголовков и содержимого веб-страницы. В зависимости от размера веб-страниц это может снизить сетевой трафик.
Вы уже указали, что вывод должен быть отброшен, поэтому время не теряется, записывая его в файл. Поэтому единственное сокращение, которое это даст, - на стороне сервера и в сети. Сервер фактически не отправит страницу по сети, но она все равно может сгенерировать ее или извлечь из кеша.