bash и многопоточность запросов [Решено]

Natrio
Что значит как? Так же, как и скрипт.
funct() {
 while read line
 do
  команда $line
  ...
 done
}
Да. Забыл про while

не подскажете еще - корректно ли будет считать c помощью awk ‘{a+=$1}END{print a} для каждой “порождаемой” (форкнутой - будет правильно называть?) функции подсчета? или нужно для каждой функции считать с помощью уникальных переменных?
типа первая функция подсчета awk ’{a+=$1}END{print a} вторая awk '{b+=$1}END{print b}

#!bin/bash -x
funct() {
while read line
do curl -Is “`echo $line`”
done
}
W=`wc -l < $1`
let S=W/10
for ((i=1;i<=W;i+=S+1))
do
sed -n “$i,$((i+S))p” $1 | funct | grep Content-Length | cut -f2 -d“ ” | awk ‘{a+=$1}END{print a}’ &
done
'
Я уже говорил, что не хакер :)
Так что в awk я не разбираюсь, увы.
Если awk может сложить заданные числа из потока вывода цикла – то пускай складывает.
И поместить это всё можно прямо в функцию, после цикла, то есть done | обработка
Natrio
Я уже говорил, что не хакер :)
Так что в awk я не разбираюсь, увы.
Если awk может сложить заданные числа из потока вывода цикла – то пускай складывает.
И поместить это всё можно прямо в функцию, после цикла, то есть done | обработка

У меня были сомнения, что переменные используемые в подсчете результатов не будут уникальными для каждого процесса awk
Вынес подсчет вообще за рамки скрипта, все равно все ответы выводит в один stdin , вот пусть один экземпляр awk и считает
В целом скрипт считает отлично, скорость подсчета в 4 раза против линейного подсчета.
У одновременного вывода несколькими процессами в один поток есть одна проблема – строки могут перебивать одна другую посередине, как это иногда происходит с выводом в консоль от одновременно запускающихся демонов.

Что касается переменных – конечно, переменные у каждого процесса свои, только дочерние наследуют копии родительских на момент запуска.
Natrio
У одновременного вывода несколькими процессами в один поток есть одна проблема – строки могут перебивать одна другую посередине
так и вышло. в случае выноса подсчета за предела скрипта - результат подсчета на порядок больше получился.
поставлю писать в файл для каждого потока, можно будет потом перепроверить колво ответов и запросов
чудно получилось писать в файл, считает чуточку быстрее чем если ставить функцию подсчета.

вообще curl умеет в одном соединении передавать запросы и если сделать вот так
echo `sed -n “$i,$((i+S))p” $1` | xargs curl -Is
то curl примет в качестве аргумента сразу все ссылки. вопрос только пережует ли curl столько аргументов ))
вот и узнаю.
PS принимает, подсчет работает медленее. жрет весь проц.
 
Зарегистрироваться или войдите чтобы оставить сообщение.