【问题标题】:Hold a bash script on PBS status without Torque在没有 Torque 的情况下保持 PBS 状态的 bash 脚本
【发布时间】:2014-05-15 15:28:57
【问题描述】:

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

PBS 作业包含一个不太可能在挂时结束前完成的程序。暂停的作业不能超过 3 个排队。

意思是:

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

是否可以使用while 和或sleep

【问题讨论】:

  • 我猜你应该可以使用epilogue 选项到qsub 开始下一个工作。
  • 这不是只适用于 Torque 吗?
  • 我不知道结尾是否适用于非 TORQUE pbs rms。

标签: bash queue pbs


【解决方案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 在 cmets 中提出的更好的方法可能是使用 per-job epilogue 选项。为此,计算节点必须能够提交作业,但由于您正在考虑让作业的最后一行来完成,所以这似乎是一种可能性。

通过将此行添加到脚本中,为作业添加 perjob 尾声: #PBS -l Epilogue=/path/to/script

然后有脚本:

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

【讨论】:

    猜你喜欢
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2018-04-09
    相关资源
    最近更新 更多