当qsub在服务器上提交的作业完成时,在我的本地计算机上运行脚本

时间:2013-12-26 04:44:11

标签: bash qsub

我通过qsub向服务器提交作业,然后想在作业完成后分析本地计算机上的结果。虽然我可以找到一种方法在服务器上提交分析作业,但不知道如何在我的本地机器上运行该脚本。

jobID=$(qsub job.sh)

qsub -W depend=afterok:$jobID analyze.sh

但不是上述内容,我想要像

这样的东西
if(qsub -W depend=afterok:$jobID) finished successfully
sh analyze.sh
else
some script

我如何完成上述任务?

非常感谢你。

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,我将尝试勾勒出对我有用的解决方案:

提交实际工作后,

jobID = $(qsub job.sh)

我会在您的脚本中创建一个循环,用于检查作业是否仍在使用

运行
qstat $jobID | grep $jobID | awk '{print $5}'

虽然我不能100%确定状态是否在5h列中,但您最好仔细检查。当作业空闲时,状态将为IQ,同时运行R,之后为C

一旦完成,我通常会在输出文件中查找运行成功与否的迹象,然后运行相应的后处理脚本。

答案 1 :(得分:2)

对我有用的一件事是使用qsub与选项

同步
qsub -sync y job.sh

(在命令行上或作为

#$ -sync y

在脚本(job.sh)本身。

只有当作业(或所有阵列作业)成功完成时,qsub才会以代码0退出。