在PBS作业脚本中获取walltime

在PBS作业脚本中获取walltime,pbs,Pbs,向PBS排队系统提交作业脚本时,自动或由用户(例如通过)指定walltime #PBS -l walltime=1:00:00 问题是这一次是否可以从作业脚本访问。是否有环境变量或其他方法来获取此walltime 最后,作业脚本应该不时地决定是否还有足够的时间做更多的工作,以便作业不会被排队系统杀死 更新: 至少如果用户在参考资料列表中指定了walltime,我可以提出以下解决方法(为bash工作) 将产生类似于 1:00:00 这存储在环境变量$PBS_WALLTIME中 当然,这是为了T

向PBS排队系统提交作业脚本时,自动或由用户(例如通过)指定walltime

#PBS -l walltime=1:00:00
问题是这一次是否可以从作业脚本访问。是否有环境变量或其他方法来获取此walltime

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

更新:

至少如果用户在参考资料列表中指定了walltime,我可以提出以下解决方法(为bash工作)

将产生类似于

1:00:00

这存储在环境变量$PBS_WALLTIME中


当然,这是为了TORQUE,我不确定您使用的是哪种PBS排队系统。

我正在寻找答案,上面的评论给了我一个似乎效果不错的想法。您可以使用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_*环境变量中获取其他不可用的信息,例如分配给作业的内存量,以及可能的其他内容。

当然,这取决于我使用的集群。一个运行TORQUE,另一个运行PBS Pro。不幸的是,即使在TORQUE集群上,$PBS_WALLTIME变量也没有定义。所以这可能不是标准的。它是什么版本的扭矩?我不确定,如果我能正确回答这个问题。如何获取版本信息?可能您要求的是设置为2.1.10的PBS版本(取自
qmgr-c“print server”
)的输出。幸运的是,这给出了相同的答案
version:2.1.10
对不起,我误读了最后一条评论。TORQUE 2.1.*代码库非常古老,其功能集与TORQUE的几乎所有其他部署都不同。此功能是后来添加的。在PBS 4.2.8(可能还有其他版本)中,$PBS_WALLTIME变量以秒为单位存储墙时间,因此
echo
将输出
3600
,而不是
1:00:00
qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p'
WALLTIME=$(qstat -f $PBS_JOBID | sed -rn 's/.*Resource_List.walltime = (.*)/\1/p')