Свежие комментарии к записи к записи к записи unholyinquisitor к записи unholyinquisitor к записи
Для отправки комментария вы должны .
Добавить комментарий
Запись опубликована в рубрике с метками , , , , , . Добавьте в закладки .
Результат выполнения. Основная часть заданий — echo $job выполнены сразу. Остальное время работают sleep, пока не истечет 5-и секундный интервал.
Как видим, ничего сложного.PНужно только обратить внимание на grep и его ключах, поскольку в разных *NIX, существуют и разные варианты этой команды.
Цикл while контролирует завершение каждого джоба, путем сравнивания содержимого файла bparallel.pid и списка работающих в системе процессов. Для наглядности, список активных джобов на текущее время также выводится на экран. В конце цикла пауза в 1-у секунду устанавливает интервал проверкиPсостоянияPджобов.
В цикле for запускаем три „джоба“, а чтобы не дожидаться выполнения каждого предыдущего задания, используем „&“, за счет чего и получаем условную параллельность выполнения джобов.PВ примере sleep 5 используется только для наглядности, чтобы растянуть время выполнения каждого задания. Пр помощи „echo $! >> bparallel.pid“ сохраняем идентификаторы запущенных процессов в файл.
ps | /usr/xpg4/bin/grep -f bparallel.pid
while [ `ps | /usr/xpg4/bin/grep -f bparallel.pid | wc -l` -ne 0 ]
echo $! >> bparallel.pid
echo $job && sleep 5 &
Внезапно на сотне *NIX серверов пришлось запустить несколько одинаковых, но долгих по времени выполнения команд. Для того, чтобы ускорить процесс и обрабатывать серверы не последовательно, а параллельно, я написал простенький sh-скрипт, шаблон которого,Pя на всякий случай оставлю здесь. Хоть я сделал его для Solaris, но подогнать его под любой другой *NIX не составит труда.
Опубликовано автором
Параллельный запуск команд из shell скрипта в *NIX
Читаю почту idfree.ru
Параллельный запуск команд из shell скрипта в *NIX | Иди Фри
Комментариев нет:
Отправить комментарий