我正试图在一台8核心机器上运行24个版本的相同代码。代码需要很多小时才能运行,我只想一次运行8,所以我想知道是否有可能编写一个bash脚本来运行8,然后当这些脚本完成之后,立即启动下一个8,等等?我基本上不想所有的24开始,然后运行难以置信的慢!谢谢,杰克
编辑1:(运行的更多细节)代码使用以下命令运行:nohup./MyCode MyInputFile 2> Myoutput
发布于 2013-09-18 17:04:45
您可以使用gnu并行。
seq 1 24 | parallel -P 8 ./myscript 或者用xargs:
seq 1 24 | xargs -l -P 8 ./myscript 更新:
如果您想使用Myinput1 Myinput2 Myinput3运行脚本..。作为你可以做的参数
find . -name 'Myinput*' -print0 | parallel -0 -P 8 ./myscript {1}或者你的命令:
find . -name 'Myinput*' -print0 | parallel -0 -P 8 nohup ./myscript {1} 2> Myoutput发布于 2013-09-18 17:51:08
还有另一种方式:
for f1 in {1..3};do
for f2 in {1..8};do
echo "$f1,$f2;"
nohup ./MyCode MyInputFile 2> Myoutput &
done
wait
donehttps://stackoverflow.com/questions/18878150
复制相似问题