Если вы часто сталкиваетесь с подобными вещами, попробуйте Parallel . Он похож на dsh (распределенная оболочка), но имеет некоторые полезные функции, такие как подсчет семафоров, и он активно поддерживается.
Из документации:
ПРИМЕР: GNU Parallel как система очередей / менеджер пакетов
GNU Parallel может работать как простая система очередей заданий или как менеджер пакетов. Идея состоит в том, чтобы поместить задания в файл и постоянно читать из него GNU Parallel. Поскольку GNU Parallel остановится в конце файла, мы используем tail для продолжения чтения:
echo >jobqueue; tail -f jobqueue | parallel
Чтобы отправить свои работы в очередь:
echo my_command my_arg >> jobqueue
Конечно, вы можете использовать -S для распределения заданий на удаленные компьютеры:
echo >jobqueue; tail -f jobqueue | parallel -S ..
Есть много замечательных примеров, которые просто царапают поверхность. Вот крутой.
ПРИМЕР: Распределение работы на локальные и удаленные компьютеры
Преобразуйте * .mp3 в * .ogg, запустив один процесс на ядро ЦП на локальном компьютере и сервере2:
parallel --trc {.}.ogg -j+0 -S server2,: \
'mpg321 -w - {} | oggenc -q0 - -o {.}.ogg' ::: *.mp3