首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash脚本只在旧批处理完成后才启动新作业。

bash脚本只在旧批处理完成后才启动新作业。
EN

Stack Overflow用户
提问于 2013-09-18 17:01:52
回答 2查看 134关注 0票数 1

我正试图在一台8核心机器上运行24个版本的相同代码。代码需要很多小时才能运行,我只想一次运行8,所以我想知道是否有可能编写一个bash脚本来运行8,然后当这些脚本完成之后,立即启动下一个8,等等?我基本上不想所有的24开始,然后运行难以置信的慢!谢谢,杰克

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-18 17:04:45

您可以使用gnu并行。

代码语言:javascript
复制
seq 1 24 | parallel -P 8 ./myscript 

或者用xargs:

代码语言:javascript
复制
seq 1 24 | xargs -l -P 8 ./myscript 

更新:

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

代码语言:javascript
复制
find . -name 'Myinput*' -print0 | parallel -0 -P 8 ./myscript {1}

或者你的命令:

代码语言:javascript
复制
find . -name 'Myinput*' -print0 | parallel -0 -P 8 nohup ./myscript {1}  2> Myoutput
票数 5
EN

Stack Overflow用户

发布于 2013-09-18 17:51:08

还有另一种方式:

代码语言:javascript
复制
for f1 in {1..3};do 
   for f2 in {1..8};do
     echo "$f1,$f2;"
     nohup ./MyCode MyInputFile 2> Myoutput &
   done
   wait
done
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18878150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档