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

如何按序运行slurm作业脚本 每次传入其他文件中的不同变量给R脚本

实现方案

步骤1:修改R脚本使其支持接收命令行参数

原有script.R无法接收外部传入的参数,需要添加参数读取逻辑,修改后内容如下:

# 读取命令行传入的位置参数,trailingOnly=TRUE表示忽略R本身的启动参数
args <- commandArgs(trailingOnly = TRUE)
x <- args[1]
print(x)

步骤2:修改Slurm作业脚本支持参数透传+避免输出覆盖

原有job.sh所有作业的输出、错误日志、作业名都相同,会导致文件覆盖,同时需要把接收的参数传递给R脚本,修改后内容如下:

#!/bin/bash
#SBATCH --job-name test_${1}
#SBATCH --ntasks 8
#SBATCH --time 04:00
#SBATCH --output out_${1}
#SBATCH --error err_${1}

# 将作业脚本接收的第一个参数传递给R脚本
Rscript script.R ${1}

这里${1}是Shell脚本的内置变量,代表调用该脚本时传入的第一个位置参数。

步骤3:批量提交作业

直接在HPC登录节点执行以下单行循环命令,就会按var.txt的顺序依次提交4个作业,每个作业对应一个变量:

while read -r var; do sbatch job.sh "$var"; done < var.txt

可选优化

如果var.txt末尾存在空行,不想提交无效作业,可以加非空判断:

while read -r var && [ -n "$var" ]; do sbatch job.sh "$var"; done < var.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:06