更改外部SLURM变量的值

时间:2014-05-30 09:52:23

标签: bash

我正在运行一个bash脚本,使用SLURM在Linux集群上运行作业。脚本的相关部分如下(slurm.sh):

#!/bin/bash
#SBATCH -p parallel
#SBATCH --qos=short
#SBATCH --exclusive
#SBATCH -o out.log
#SBATCH -e err.log
#SBATCH --open-mode=append
#SBATCH --cpus-per-task=1
#SBATCH -J hadoopslurm
#SBATCH --time=01:30:00
#SBATCH --mem-per-cpu=1000
#SBATCH --mail-user=amukherjee708@gmail.com
#SBATCH --mail-type=ALL
#SBATCH -N 5

我从另一个脚本(ext.sh)调用此脚本,其中一部分如下:

#!/bin/bash
for i in {1..3}

do
    source slurm.sh
done

...

我想通过在ext.sh的for循环中将其设置为3,6,8等值来操纵N变量的值为slurm.sh(#SBATCH -N 5)。如何从ext.sh以编程方式访问变量?请帮忙。

1 个答案:

答案 0 :(得分:1)

首先请注意,如果您只是简单地获取shell脚本,则不会向Slurm提交作业,只需在提交节点上运行作业即可。所以你需要写

#!/bin/bash
for i in {1..3}

do
    sbatch slurm.sh
done

现在,如果要以编程方式更改-N,可以选择将其从文件slurm.sh中删除,并将其作为参数添加到sbatch命令中:

#!/bin/bash
for i in {1..3}

do
    sbatch -N $i slurm.sh
done

上述脚本将提交三个作业,分别请求1,2和3个节点。