如何在SBATCH输出文件中使用作业名称作为变量?
Slurm/SBATCH 可用变量及作业名称替代语法
当然有啦!你要找的作业名称对应的替代语法是%x,直接把脚本里的%j替换成%x,就能用作业名称来命名输出文件了。给你改个示例脚本参考:
#!/bin/bash # 此处省略其他sbatch命令... #SBATCH -o slurm-%x.out-%N # 标准输出文件名,使用作业名称(%x)和首个节点(%N) #SBATCH -e slurm-%x.err-%N # 标准错误文件名,使用作业名称和首个节点值
我整理了一些常用的Slurm变量和输出文件名转义符,方便你日常使用:
输出文件名常用转义符(在-o/-e参数中使用)
%j: 作业ID(你已经在用的)%x: 作业名称(就是你要找的)%N: 执行作业的首个节点名称%u: 提交作业的用户名%t: 任务ID(针对数组作业)%A: 数组作业的主ID%p: 作业的进程ID%L: 作业的时间限制(格式为HH:MM:SS)
脚本内可直接调用的SBATCH环境变量
作业运行时Slurm会自动设置这些环境变量,你能在脚本里直接引用:
$SLURM_JOB_ID: 作业ID$SLURM_JOB_NAME: 作业名称$SLURM_JOB_NODELIST: 分配给作业的节点列表$SLURM_SUBMIT_DIR: 提交作业的目录路径$SLURM_NTASKS: 作业申请的任务总数$SLURM_CPUS_PER_TASK: 每个任务分配的CPU核心数
如果想查看完整的变量列表,直接在集群上运行man sbatch,翻到「OUTPUT FILE NAME ESCAPES」和「ENVIRONMENT VARIABLES」章节就能看到官方支持的所有变量,内容非常详细。
内容的提问来源于stack exchange,提问作者ctesta01
相关产品推荐
相关产品推荐

