zubastiy |
|
Темы:
136
Сообщения:
548
Участник с: 18 сентября 2009
|
Добрый день. Надо мне посчитать размер хранилища под кеш картинок с сайта. Картинки генерятся приложением на бэкенде в зависимости от запрашиваемого размера (оригинальные картинки хранятся в скл базе) и тупо взять размер картинок в хранилище - не актуально. Есть большой (1.2 миллиона строк) список ссылок по которым нужно сходить и получить размер объекта. Полученные размеры объекта сложить и посчитать общую сумму. Последовательное выполнение работает, но очень медленно. for n in `cat /home/uniq-ex120201.log`; do curl -I "`echo $n`" 2> /dev/null | grep Content-Length | cut -f2 -d" " ; done > Content-Length ничего в голову не приходит кроме как разрезать файл на 100-200 частей и спрашивать 100 файлов параллельно. но как эти запросы к разбитым частям “породить” из скрипта? если 4 - 5 можно написать с (поставив & ) то 200 строк уже не так приятно )) может как то есть вариант вызвать внутри скрипта цикл с “порождением” отдельной функции по подсчету размеров файлов, и не дожидаясь завершения выполнения функции перейти к следующему вызову? |
RiD |
|
Темы:
30
Сообщения:
400
Участник с: 27 июня 2011
|
Да должно работать, как Вы предлагаете. Как меняется строчка, в зависимости от её номера(т.е. если бы вы их выписали пять, чем бы 5 отличалась от 4 в вашем варианте)? Заворачиваете вашу строчку в функцию, и вызываете её из цикла, допустим while сколько захотите раз. Должно работать, а если нет, то можно доработать, чтоб работало :-) |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
#!/bin/bash # функция подсчёта по одному фрагменту списка funct() { # должна читать строки со своего стандартного ввода ... # в конце она выводит или пишет куда-то результат по своему участку } # цикл создания процессов file=file.log # берём этот список W=`wc -l < $file` # считаем строки let S=W/10 # делим на десять процессов for ((i=1;i<=W;i+=S+1)) do # берём порцию строк и направляем на стандартный ввод экземпляру функции подсчёта sed -n "$i,$((i+S))p" $file | funct & done # в конце остаётся суммировать конечные результаты всех участков |
zubastiy |
|
Темы:
136
Сообщения:
548
Участник с: 18 сентября 2009
|
Natrio - вы скриптохакер! ) Трюк с “порциями” очень понравился, спасибо! |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
Пожалуйста :) Я не хакер, я лишь немного умею программировать, и иногда пишу скрипты. |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
хакер = хороший программист . Ломает не для выгоды а для души или по работе, что не является единственным занятием. гудгай. Кракер и др. *-еры = реальные злоумышленики. Те кто идеалогически или покаким-либо еще причинам хакерами быть не могут. бэдгаи. Добавьте в шапку темы .
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
grayich |
|
Темы:
235
Сообщения:
2294
Участник с: 08 января 2009
|
sleepycatчто-то админы молчат по поводу кнопочки ![]() |
vadik |
|
Темы:
57
Сообщения:
5501
Участник с: 17 августа 2009
|
grayichНа основании молчания можно сделать вывод, что “Ненужно” (по крайней мере таким способом как было предложено). ) |
grayich |
|
Темы:
235
Сообщения:
2294
Участник с: 08 января 2009
|
vadikЕсли админ не ленивый, то это не настоящий админ, вариант ))) |
vadik |
|
Темы:
57
Сообщения:
5501
Участник с: 17 августа 2009
|
Лень тут кстати не при чем. Сторонний патч наложить мало, его еще потом надо будет и поддерживать. Полную совместимость и отсутствие косяков тоже никто не обещает. Ну и прочие радости костылей и подпорок… |