在没有Torque的情况下持有PBS状态的bash脚本

时间:2014-05-15 15:28:58

标签: bash queue pbs

我在大型国家系统上访问了低优先级队列。我当时只能在队列中分配1个工作。

PBS作业包含一个在壁垒结束前不太可能完成的程序。保留的作业不能以超过3的数字排队。

这意味着:

  1. 我无法使用-W depend=afterok:$ID_of_previous_job。该脚本将立即提交所有作业,但只有前3个将进入队列(H状态中的最后2个)
  2. 我无法使用提交next_job的最后一行修改提交脚本(实际程序很可能在walltime结束之前完成,然后是最后一行没有执行。
  3. 我无法安装任何软件,所以我只能使用Bash脚本而不是Torque
  4. 我宁愿不使用"时间检查"脚本(例如:每隔5分钟检查previous_job是否结束)
  5. 是否可以使用while和/ sleep

1 个答案:

答案 0 :(得分:1)

选项1 要使用whilesleep,您需要执行与时间检查脚本非常相似的操作:

#!/bin/bash
jobid=`submit the first job`
while [[ -z `qstat ${jobid} | grep C` ]]; do
  sleep 5
done

# submit the new job once the loop is done, after checking the exit status if desired

选项2 - 可能只是TORQUE,不确定: Dmitri Chubarov在评论中提出的更好的方法可能是使用每个工作的结局选项。要做到这一点,计算节点必须能够提交作业,但由于你正在考虑完成工作的最后一行,所以这似乎是一种可能性。

通过在脚本中添加以下行来向作业添加一个perjob结局:     #PBS -l epilogue = / path / to / script

然后有脚本:

#!/bin/bash
# check exit code if desired, its argument 10 to the script
# submit the next job