【发布时间】:2014-09-04 20:14:03
【问题描述】:
我有一个 BASH 脚本,可以将多个串行作业提交到 PBS 排队系统。提交作业后,脚本结束。然后这些作业在集群上运行,当它们全部完成后,我可以继续下一步。典型的工作流程可能涉及其中几个步骤。
我的问题:
有没有办法让我的脚本在提交完成后不退出,而是休眠,直到该脚本提交的所有作业都在集群上完成,然后才退出?
【问题讨论】:
-
到目前为止,在手动启动下一个脚本之前,我一直在等待步骤。我可以通过检查作业完成后转储的所有 job.o/job.e 文件的存在并计算它们来想出一种笨拙的方法。不过我还没试过。
-
或许将
wait添加到脚本的末尾? (见man bash和wait) -
@DavidC.Rankin:我不认为
wait是答案。这些是提交的批处理作业,而不是 shell 的子进程。 -
您可以编写一个重复调用
qsub的脚本(最好有一些延迟,以免系统过载)并在所有指定作业完成后终止。这很丑陋,但它应该可以工作。如果没有人提出更好的解决方案,我可能会发布这个答案。 -
我在考虑这个,基思。我想我更喜欢检查 job.o 文件数量的脚本。这样您就不需要知道作业提交编号,也不必一直调用 qsub 来检查那些作业是否不存在。您只需要知道您提交了多少作业,并且该数字等于已知目录中 .o 文件的数量。顺便说一句,我写了一些东西来检查 job.o 文件的数量。可以发吗?? -- 不太确定这里的礼仪(这是我的第一篇文章)