пятница, 8 февраля 2013 г.

выполнение sh скриптов

Свежие комментарии к записи к записи к записи 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 | Иди Фри

Комментариев нет:

Отправить комментарий