我想達成什麼是這樣的:如何執行具有併發性和等待限制的多個命令?
#!/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個CPU核心可用,我不希望有超過3個進程在同一時間運行。
在腳本開始的第3個過程開始。
5分鐘後:第1道工序完成,第4道工序開始。
第10分鐘:第2和第4過程結束並且第5過程開始。
第15分鐘:第3個過程結束。
第20分鐘:第5個過程結束。第六個過程沒有進一步的等待而死亡。
我做了很多的研究計算器,但我找不到類似的使用情況:
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 –