Делаем скрипт на Bash параллельным с помощью xargs
Тем, кто когда-нибудь пытался написать параллельный скрипт на Bash, должен быть знаком параметр -P утилиты xargs. В сочетании с find он позволяет выполнять заданную команду для каждого файла, распределяя эти команды между указанным количеством процессов. Эта схема распараллеливания идеально подходит, если нужно, скажем, сковертировать все файлы в директории.
Когда я начал писать такие скрипты, то стал испытывать определенное неудобство. Дело в том, что в большинстве случаев команда, подаваемая на вход xargs, оказывается сложнее вызова определенной утилиты с аргументами. То и дело получается целый набор команд, особенно если требуется отображать ход выполнения процесса, реагировать на ошибки. В итоге для обработки одного файла создается отдельный скрипт в дополнение к скрипту, в котором участвует вызов xargs.
Я задумался, как можно соединить эти два скрипта в один...
Никита Мельниченко.