我正在运行一个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以编程方式访问变量?请帮忙。
答案 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个节点。