扭矩 PBS:将标准输出文件名指定为作业 ID 号

Torque PBS: Specifying stdout file name to be the job id number

默认情况下,从提交的作业到 Torque 队列的输出将保存到名为 job_name.o658392 的文件中。使用该示例,我想要做的是将输出文件命名为 658392.job_name.log

我知道我可以通过在脚本顶部写 #PBS -e filename 行来指定输出文件的名称,甚至可以在文件名中使用 $PBS_JOBID 等变量. 问题是 $PBS_JOBID 不仅仅是数字——而是看起来像 658392.some.very.long.host.name

我试过使用 ${PBS_JOBID/.*},它应该只引用数字,但问题是我在执行此操作时遇到错误。上面写着:Failed to expand destination path in data staging: /path/to/output/${PBS_JOBID/.*}.log

您知道如何以有效的方式指定输出文件名吗?

如果您是管理员,您可以通过设置

将其设为数字​​作业 ID
qmgr -c 'set server display_job_server_suffix = false'

当然,如果您更改此设置,您希望在没有作业排队时执行此操作。

如果您是普通用户——我还没有对此进行测试——但我相信如果您向作​​业的环境添加一个变量,您可以在作业的输出文件中使用该变量。如果您愿意,可以创建一个名为 numeric_jobid 的变量并将其添加到作业的环境中,然后您可以在作业的输出文件中使用它。我相信你可以在 job_script 中有以下几行:

#PBS -j oe 
#PBS -o $numeric_jobid

然后

jobid=`qsub job_script`
numeric_id=`get just the numeric id from $jobid`
qalter $jobid -v numeric_id=$numeric_id

编辑:你可以这样省一步:

qalter -o $numeric_id.log $jobid

而且我相信这会让你做到这一点。