我通过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
我如何完成上述任务?
非常感谢你。
答案 0 :(得分:2)
我遇到了类似的问题,我将尝试勾勒出对我有用的解决方案:
提交实际工作后,
jobID = $(qsub job.sh)
我会在您的脚本中创建一个循环,用于检查作业是否仍在使用
运行qstat $jobID | grep $jobID | awk '{print $5}'
虽然我不能100%确定状态是否在5h列中,但您最好仔细检查。当作业空闲时,状态将为I
或Q
,同时运行R
,之后为C
。
一旦完成,我通常会在输出文件中查找运行成功与否的迹象,然后运行相应的后处理脚本。
答案 1 :(得分:2)
对我有用的一件事是使用qsub与选项
同步qsub -sync y job.sh
(在命令行上或作为
#$ -sync y
在脚本(job.sh)本身。
只有当作业(或所有阵列作业)成功完成时,qsub才会以代码0退出。