请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 569|回复: 7

[shell脚本] shell中的循环问题

[复制链接]

130

帖子

0

威望

357

eV
积分
487

Level 3 能力者

发表于 2018-6-24 10:30:05 | 显示全部楼层 |阅读模式
请问大家,在shell脚本中使用循环,如何让其执行完一个循环之后再开始下一个循环,也就是未完成当前循环时则一直等待直至该次循环完成后再开始下一个循环?for while好像是同步以此执行完所有的循环

1万

帖子

25

威望

1万

eV
积分
35672

管理员

公社社长

发表于 2018-6-24 11:20:19 | 显示全部楼层
不知道你具体怎么写的
可尝试在命令后面加个wait命令,这样之前交到后台的任务执行完才会执行下一个
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

130

帖子

0

威望

357

eV
积分
487

Level 3 能力者

 楼主| 发表于 2018-6-24 11:38:14 | 显示全部楼层
sobereva 发表于 2018-6-24 11:20
不知道你具体怎么写的
可尝试在命令后面加个wait命令,这样之前交到后台的任务执行完才会执行下一个

for ((i=0;i<5;i++)); do
  cd dir$i
  sbatch submit$i.slm
  wait
done
for循环加入wait之后,也是会同步一次地把所有的任务提交,而并不是等待submit0.slm完成后再提交submit1.slm,我希望它能等待该次循环完成后再开始下一次循环,该如何实现呢?

1万

帖子

25

威望

1万

eV
积分
35672

管理员

公社社长

发表于 2018-6-24 11:44:59 | 显示全部楼层

是提交到远程机子上运行?那么sbatch submit$i.slm提交上去之这个任务就算做完了,就直接做下一轮了
我不清楚你的提交脚本具体怎么运行。比如如果提交完之后,任务算完了,会自动返回来一个文件,那么你可以尝试写个无限循环,每10秒检测一次,等检测到某个文件出现了,就从无限循环里跳出来,到下一轮
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

130

帖子

0

威望

357

eV
积分
487

Level 3 能力者

 楼主| 发表于 2018-6-24 12:56:38 | 显示全部楼层
本帖最后由 Theor_Comp 于 2018-6-24 12:57 编辑
sobereva 发表于 2018-6-24 11:44
是提交到远程机子上运行?那么sbatch submit$i.slm提交上去之这个任务就算做完了,就直接做下一轮了
我 ...

是远程提交,目的是:先提交submit0.slurm, 等submit0.slurm结束后会生成file文件,等生成file文件后再提交submit1.slurm
是下面这个代码吗
for ((i=0;i<5;i++)); do
  cd dir$i
  sbatch submit$i.slm
  while true; do
  sleep 10
  if [ -e $file ];  then
  continue
  fi
  done
done

1万

帖子

25

威望

1万

eV
积分
35672

管理员

公社社长

发表于 2018-6-24 13:25:58 | 显示全部楼层
Theor_Comp 发表于 2018-6-24 12:56
是远程提交,目的是:先提交submit0.slurm, 等submit0.slurm结束后会生成file文件,等生成file文件后再提 ...

差不多。你试试吧
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

60

帖子

0

威望

338

eV
积分
398

Level 3 能力者

发表于 2018-6-28 20:50:27 来自手机 | 显示全部楼层
收藏备用。

184

帖子

0

威望

1915

eV
积分
2099

Level 5 (御坂)

发表于 2018-6-29 23:11:38 | 显示全部楼层
Theor_Comp 发表于 2018-6-24 12:56
是远程提交,目的是:先提交submit0.slurm, 等submit0.slurm结束后会生成file文件,等生成file文件后再提 ...

LZ这个脚本好像运行不成功,我是使用到g09上的

如果LZ运行成功了,能否将脚本复制出来看看?
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2018-11-15 00:31 , Processed in 0.114634 second(s), 23 queries .

快速回复 返回顶部 返回列表