Внезапно на сотне *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"