自动qsub作业完成状态通知

时间:2015-07-28 06:46:57

标签: linux bash shell unix qsub

我有一个shell脚本,可以从中调用其他五个脚本。第一个脚本在群集中创建50个qsub作业。个人工作执行时间从几分钟到一小时不等。我需要知道所有50个工作何时完成,因为在完成所有工作后我需要运行第二个脚本。如何查找是否所有qsub作业都已完成?一种可能的解决方案是使用无限循环并使用带有作业ID的qstate命令检查作业状态。在这种情况下,我需要不断检查作业状态。这不是一个很好的解决方案。是否有可能在执行后,qsub作业将自行通知我。因此,我不需要经常监视工作状态。

2 个答案:

答案 0 :(得分:0)

我从未听说过如何做到这一点,如果有人得到了一个好的回答,我会非常感兴趣。

同时,我建议您使用文件技巧。您的脚本最后会输出一个文件,或者您检查是否存在日志文件(假设它们仅在最后创建)。

while [ ! -e ~/logs/myscript.log-1 ]; do
    sleep 30;
done

答案 1 :(得分:0)

qsub能够使用-W depend=afterok:jobid来处理作业依赖性。

e.g。

#!/bin/bash

# commands to run on the cluster
COMMANDS="script1.sh script2.sh script3.sh"
# intiliaze JOBID variable
JOBIDS=""
# queue all commands
for CMD in $COMMANDS; do
    # queue command and store the job id
    JOBIDS="$JOBIDS:`qsub $CMD`"
done
# queue post processing, depended on the submitted jobs
qsub -W depend=afterok:$JOBIDS postprocessing.sh

exit 0

此处可以找到更多示例http://beige.ucs.indiana.edu/I590/node45.html