You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PBS Pro自定义标准输出/错误文件名中追加JobID?

在PBS Pro中自定义带JobID的输出/错误文件名

问题原因

你之前的写法无效,核心原因是${PBS_JOBID}是作业运行时才会被赋值的环境变量,但PBS在提交脚本阶段就会解析#PBS -e/-o指令,此时JobID尚未生成,变量会被解析为空值,最终仅生成err.txt和out.txt。

解决方案

方法1:使用PBS内置占位符(推荐)

PBS Pro内置了专门的文件名替换符,提交时会自动替换为对应作业参数,无需依赖环境变量:

  • %j:仅保留JobID的主体部分(去掉.servername这类后缀)
  • %J:完整的JobID(包含服务器后缀)

直接在#PBS指令中使用这些占位符即可:

# 生成带短JobID的错误文件
#PBS -e err-%j.txt
# 生成带短JobID的输出文件
#PBS -o out-%j.txt

提交后会生成类似err-12345.txt、out-12345.txt的文件。如果需要完整JobID,替换为%J即可:

#PBS -e err-%J.txt
#PBS -o out-%J.txt

对应生成err-12345.login01.txt这类格式的文件。

方法2:脚本运行时手动重定向

如果需要更灵活的命名规则(比如追加日期、用户名等),可以在脚本主体部分(非#PBS指令区)手动重定向输出,此时$PBS_JOBID已被正确赋值:

# 可选:禁用PBS默认的输出/错误文件,避免生成冗余文件
#PBS -e /dev/null
#PBS -o /dev/null

# 提取短JobID并自定义文件名
JOB_ID_SHORT=${PBS_JOBID%%.*}
# 重定向标准输出和错误到目标文件
exec 1>out-${JOB_ID_SHORT}.txt 2>err-${JOB_ID_SHORT}.txt

# 此处写入你的作业命令
your_task_command

示例扩展:追加日期和用户名

JOB_ID_SHORT=${PBS_JOBID%%.*}
CURRENT_DATE=$(date +%Y%m%d)
USER_NAME=$(whoami)
exec 1>${USER_NAME}_${CURRENT_DATE}_out-${JOB_ID_SHORT}.txt 2>${USER_NAME}_${CURRENT_DATE}_err-${JOB_ID_SHORT}.txt

验证方式

提交作业后,可通过qstat -f <你的作业ID>命令查看作业的Error_Path和Output_Path属性,确认文件名是否符合预期。

内容的提问来源于stack exchange,提问作者Tissot11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:47:34