программирование

Параллельный запуск команд из shell скрипта в *NIX


Терминал. Параллельный запуск команд из shell скрипта в *NIXВнезапно на сотне *NIX серверов пришлось запустить несколько одинаковых, но долгих по времени выполнения команд. Для того, чтобы ускорить процесс и обрабатывать серверы не последовательно, а параллельно, я написал простенький sh-скрипт, шаблон которого, я на всякий случай оставлю здесь. Хоть я сделал его для Solaris, но подогнать его под любой другой *NIX не составит труда.

jobs="one two three"

# execute parallel commands
for job in $jobs
do
   # Run the job
   echo $job && sleep 5 &

   # Save PID
   echo $! >> bparallel.pid
done

# job control loop
while [ `ps | /usr/xpg4/bin/grep -f bparallel.pid | wc -l` -ne 0 ]
do
   date
   ps | /usr/xpg4/bin/grep -f bparallel.pid
   sleep 1
done

rm -rf bparallel.pid
echo "done"

(далее…)