Помогите пожалуйста со скриптом
AhDoh4aChahr 19 октября, 2013 - 17:42
Помогите пожалуйста в написании скрипта.
В директории находятся файлы для обработки. Существует функция которая будет
их обрабатывать. Из директории надо взять 8 файлов и отправить в работу, потом
следующие 8 и так далее. До тех пор пока файлы не закончатся. Как такой цикл
изобразить?
»
- Для комментирования войдите или зарегистрируйтесь
Что подразумевается под
Что подразумевается под передать в обработку ? Передать имена файлов на вход функции или переместить куда-либо файлы и вызвать функцию ?
kostik87 написал(а): Что
Наверное лучше сначала переместить, а потом передать имена файлов функции. Я
думаю что можно это представить как последовательность команд для кажлого
файла. Я не представляю как из каталога отловить определённое количество
файлов порциями пока не закончатся. Пример бы какой нибудь для затравки. Вобще в башку ничего не приходит.
Ну хотя бы что-то
Ну хотя бы что-то такое:
kostik87 написал(а):Ну хотя
Большое спасибо, завтра с утра почитаю и попробую понять. Что-то к ночи гора дел свалилась даже поесть ни как не могу.
P.S. Ещё раз огромное спасибо. Больше с подобными вопросами не придётся обращаться.
kostik87 написал(а): Ну хотя
Я не понял одного места Вы не могли бы разъяснить? Строка
"$file_names $i" вот это выражение не понял.
В переменной i находится имя
В переменной i находится имя файла, в переменной file_names находятся имена нескольких файлов, это строка добавляет к строке в переменной file_names значение переменной i.
Т.е. в переменной file-names собирается строка " файл1 файл2 файл3 файл4 файл5 файл6 файл7 файл8".
Вам эта переменная не нужна, я её использую заместо вашего вызова функции и потом просто вывожу её значение посредством echo, что бы было видно что обрабатываются 8 файлов, это всё только ради примера.
Вы же вместо этой строки можете перемещать (копировать) файлы в другую директорию или делать что-либо другое.
Ясно, не устану говорить Вам
Ясно, не устану говорить Вам спасибо. Ни в одной книжке не прочитаешь того что объяснит живой человек.
Простой пример: увидел в Вашем скрипте "ls -1" и усомнился, я же умный и знаю что подразумевалось -l.
Ну а раз умный открыл man ls и понял что жизнь гораздо проще чем кажется.
А откуда интересно живой
А откуда интересно живой человек берет информацию дабы поделиться с вами? Рекомендую разобыть книжку abs. Онлайн версия тут http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html
Цикл обычный, только надо
Цикл обычный, только надо считать кол-во файлов и на кратных 8 запускать
если вы хотите параллельное выполнение в 8 потоков, то проще готовый скачать. или написать однопоточный и запустить 8 раз на разных наборах файлов
_SerEga_ написал(а): Цикл
Что-то я не совсем понял. что готовый скачать? Однопоточный написан, я его и запускаю как Вы говорите. Так конечно проще но не лучше. В каталоге каждый раз разное количество файлов.
Задача мягко говоря не нова.
Задача мягко говоря не нова. есть готовые batch системы(очередь задач, сколько-то параллельно выполняется, как только одна завершается, запускается следующая из очереди), но они предлагают гораздо больший функционал, соответственно и сложнее.
Скриптом разделить один набор файлов на 8 не сложно, потом запустить запустить на каждом однопоточный вариант обработки.
А можно пример такой вот
А можно пример такой вот batch системы? И в чём преимущества перед самодельным скриптом?
Ну там, ресурсов меньше потребляют, работают быстрее и надёжнее, настраиваются легче, размером меньше?
Плюс в том, что она уже
Плюс в том, что она уже готовая, у нее может быть много полезного окромя тупого запуска, но это проявится только если юзать активно, постоянно и разнообразно
если раз в день запускать один и тот же скрипт, то лучше свой велосипед - ты в нем разбираешься на 100% и если, что легко попрпавишь или изменишь
http://www.clusterresources.com/torquedocs21/commands/qsub.shtml первая попавшаяся ссылка из гугла