2

我正在通过 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

我怎样才能完成上述任务?

非常感谢。

4

2 回答 2

2

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

提交实际工作后,

jobID=$(qsub job.sh)

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

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

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

完成后,我通常会对输出文件进行 grep 以查看运行是否成功的迹象,然后运行适当的后处理脚本。

于 2013-12-26T10:11:25.743 回答
2

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

qsub -sync y job.sh

(在命令行或作为

#$ -sync y

在脚本(job.sh)本身中。

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

于 2017-02-14T19:37:32.640 回答