Что я хотел бы достичь, это что-то вроде этого:Как выполнить несколько команд с параллелизмом и ограничением ожидания?
#!/bin/sh
concurrency_limit 3
#takes 5 min
(/usr/bin/my-process-1 --args1 && /usr/bin/my-process-2 --args1) &
#takes 10 min
(/usr/bin/my-process-1 --args2 && /usr/bin/my-process-2 --args2) &
#takes 15 min
(/usr/bin/my-process-1 --args3 && /usr/bin/my-process-2 --args3) &
#takes 5 min
(/usr/bin/my-process-1 --args4 && /usr/bin/my-process-2 --args4) &
#takes 10 min
(/usr/bin/my-process-1 --args5 && /usr/bin/my-process-2 --args5) &
#takes 20 min
(/usr/bin/my-process-1 --args6 && /usr/bin/my-process-2 --args6) &
wait max_limit 1200
echo all processes complete
В целом ожидаемое максимальное время выполнения 20 мин (- + 1мин) и давайте предположим, что у меня есть 3 Процессорные ядра доступны, и я не хочу иметь одновременно работает более 3 процессов.
В начале скрипта началось 3 процесса.
Через 5 мин: 1-й процесс завершен и 4-й процесс начат.
10-й мин: завершены 2-й и 4-й процессы и начат 5-й процесс.
15-й мин. 3-й процесс завершен.
20 мин. 5-й процесс завершен. 6-й процесс убит без дальнейшего ожидания.
Я сделал много исследований в StackOverflow, но я не мог найти подобный случай использования:
https://www.codeword.xyz/2015/09/02/three-ways-to-script-processes-in-parallel/
http://www.gnu.org/software/parallel/
Любая помощь или комментарии будут оценены спасибо.
Был ли мой ответ или любые другие проблемы, устраняющие вашу проблему? Если да, пожалуйста, подумайте о том, чтобы принять его как ваш ответ - нажав полый зеленый галочку/галочку рядом с подсчетом голосов. Если нет, скажите, пожалуйста, что не сработало, чтобы я или кто-то еще помог вам дальше. Благодарю. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –