繁体   English   中英

传递字符串参数以命名 SLURM 中的作业

[英]passing a string argument to name a job in SLURM

我想将参数传递给集群中的 bash 脚本,以便为作业命名。 我试过这个:

#!/bin/bash
#SBATCH -J "$1" #<--- to name the job with the first parameter
#SBATCH --partition=shortq
#SBATCH -o %x-%j.out
#SBATCH -e %x-%j.err


echo "this is a test job named" $1
Gate main.mac

当我开始工作时

sbatch my_script.sh  test_sript

我得到一个名为 $1-23472.out 的文件。 似乎“$1”没有被解释。 我怎样才能拥有一个名为“test_script-23472.out”的文件?

另外, Gate main.mac 行是强制性的吗? 谁能解释我为什么要放它?

非常感谢

您可能无法完全按照您的意愿进行操作,但这里有一个非常接近的解决方案:

批处理脚本:

#!/bin/bash
#SBATCH --partition=shortq
#SBATCH -o %x-%j.out
#SBATCH -e %x-%j.err


echo "this is a test job named" $SLURM_JOB_NAME
(rest of your script here)

提交:

$ sbatch -J jobname my_script.sh

Slurm 不会解释评论中的 Bash 变量。 Bash 或者因为它在评论中。

一种解决方案是这样的提交结构:

ARG="<something>" sbatch -J "$ARG" my_script.sh  test_sript "$ARG"

至于Gate main.mac行,它用于以main.mac作为参数启动Gate程序。

这就是我格式化 slurm 脚本以将 bash 变量解析为作业名称的方式。

#!/bin/bash
MYVAR=$1

sbatch --export=ALL -J ${MYVAR} --wrap="run something"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM