如何将SLURM作业脚本中的SBATCH配置选项输出到.out文件?
解决SLURM作业脚本参数自动记录到.out文件的方法
方法1:直接提取脚本内的#SBATCH配置行
不用手动逐个echo,在脚本开头加入这段代码,让脚本自动读取并打印所有SBATCH参数:
# 输出本次作业的SBATCH配置到日志 echo "=== 本次作业SBATCH配置参数 ===" gawk '/^#SBATCH/ {print $0}' "$0" echo "=============================="
这段代码用gawk抓取当前脚本中所有以#SBATCH开头的行,$0指代当前脚本文件路径,执行后会自动把所有SBATCH参数写入到.out日志里,完全不用手动维护参数列表。
方法2:打印SLURM自动生成的环境变量
SLURM会把大部分SBATCH参数转换成对应的环境变量(比如SLURM_NNODES对应--nodes,SLURM_CPUS_PER_TASK对应--cpus-per-task),可以直接打印这些变量查看实际生效的配置:
echo "=== 作业运行环境参数 ===" env | grep SLURM_ echo "======================"
这个方法能看到集群实际分配的参数(包括默认值覆盖的配置),但部分小众参数可能没有对应的环境变量。
方法3:用scontrol实时查询完整作业配置
脚本运行时已经自动获取到SLURM_JOB_ID环境变量,直接执行scontrol命令就能拿到作业的全部配置细节:
echo "=== 完整作业配置详情 ===" scontrol show job "$SLURM_JOB_ID" echo "======================"
这个命令会输出作业的所有信息,包括你设置的SBATCH参数、集群分配的资源、作业状态等,内容最全面。
这三个方法都能自动完成参数记录,不用手动维护,适合新手积累作业配置参考经验。
内容的提问来源于stack exchange,提问作者Peter Sanctus
相关产品推荐
相关产品推荐

