bash脚本仅在旧批处理完成时才启动新作业

JMz*_*nce 1 bash multicore timing

我试图在8核机器上运行相同代码的24个版本.代码需要花费很多时间来运行,我只想一次运行8个,所以我想知道是否有可能编写一个运行8的bash脚本,然后当这些脚本完成后立即启动下一个8,依此类推?我基本上不希望所有24个开始然后运行得非常慢!谢谢,杰克

编辑1 :(运行的更多细节)代码使用以下命令运行:nohup ./MyCode MyInputFile 2> Myoutput

use*_*001 5

你可以使用gnu parallel

seq 1 24 | parallel -P 8 ./myscript 
Run Code Online (Sandbox Code Playgroud)

或者使用xargs:

seq 1 24 | xargs -l -P 8 ./myscript 
Run Code Online (Sandbox Code Playgroud)

更新:

如果你想用Myinput1 Myinput2 Myinput3 ..作为参数运行脚本,你可以做

find . -name 'Myinput*' -print0 | parallel -0 -P 8 ./myscript {1}
Run Code Online (Sandbox Code Playgroud)

或者用你的命令:

find . -name 'Myinput*' -print0 | parallel -0 -P 8 nohup ./myscript {1}  2> Myoutput
Run Code Online (Sandbox Code Playgroud)