7

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

#PBS -l walltime=1:00:00

问题是这个时间是否可以从作业脚本中访问。是否有环境变量或其他方式来获得这个walltime。

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

更新:

至少如果用户在资源列表中指定了 walltime,我可以提出以下解决方法(适用于 bash)

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

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

echo $PBS_WALLTIME

会产生类似的东西

1:00:00
4

2 回答 2

5

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

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

于 2013-04-11T16:18:02.487 回答
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_* 环境变量中不可用的其他信息,例如为作业分配的内存量以及可能的其他一些内容。

于 2014-04-07T14:07:21.310 回答