当向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
答案 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_ *环境变量中没有的其他信息,例如为作业分配的内存量以及其他一些内容。