Интересный вопрос. Я попытался использовать для этого xargs и нашел способ.
Попробуйте это:
seq 10 | xargs -i --max-procs=4 bash -c "echo start {}; sleep 3; echo done {}"
--max-procs=4
обеспечит одновременную работу не более четырех подпроцессов.
Вывод будет выглядеть так:
start 2
start 3
start 1
start 4
done 2
done 3
done 1
done 4
start 6
start 5
start 7
start 8
done 6
done 5
start 9
done 8
done 7
start 10
done 9
done 10
Обратите внимание, что порядок выполнения может не соответствовать командам в том порядке, в котором вы их отправляете. Как видите, 2 началось раньше 1.