在PBS作业脚本中获取壁垒时间

时间:2013-04-05 13:49:17

标签: pbs

当向PBS排队系统提交作业脚本时,自动指定挂壁时间或由用户指定挂壁时间,例如,通过

#PBS -l walltime=1:00:00

问题是如果可以从作业脚本访问此时间。是否有环境变量或其他方式来获得此壁挂时间。

最后,作业脚本应该不时地决定是否还有足够的时间做更多的工作,以便作业不会被排队系统杀死。

更新

至少如果用户在资源列表中指定了walltime,我可以建议以下解决方法(为bash工作)

read _ _ PBS_WALLTIME  <<< `qstat -f $PBS_JOBID | grep "Resource_List.walltime"`

从qstat输出解析walltime并将值放在PBS_WALLTIME变量中。因此,命令

echo $PBS_WALLTIME

将产生类似

的内容
1:00:00

2 个答案:

答案 0 :(得分:5)

它存储在环境变量$ PBS_WALLTIME中。

当然,那是TORQUE,我不确定你使用的是哪个PBS排队系统。

答案 1 :(得分:1)

我一直在寻找答案,上面的评论给了我一个似乎很有效的想法。您可以使用qstat并使用sed:

从中获取相关信息
qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p'

将其放入PBS脚本中将打印出值,您可以使用标准bash将其输出存储在变量中:

WALLTIME=$(qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p')

您还可以使用它来获取PBS_ *环境变量中没有的其他信息,例如为作业分配的内存量以及其他一些内容。