简体   繁体   中英

passing a string argument to name a job in SLURM

I want to pass a parameter to as bash script in a cluster in order to name the job. I tried this:

#!/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

When I launch the job with

sbatch my_script.sh  test_sript

I'm getting a file named $1-23472.out. It appears that "$1" didn't be interpreted. How can I have a file named "test_script-23472.out"?

Also, is the line Gate main.mac mandatory? Can anyone explains me why we should put it?

Many thanks

You probably can't do it exactly as you want to, but here's a solution that comes pretty close:

Batch script:

#!/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)

Submit with:

$ sbatch -J jobname my_script.sh

Slurm will not interpret the Bash variable in the comments. Bash either since it is in a comment.

One solution is a construct like this for submission:

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

As for the Gate main.mac line, it is used to start the Gate program with main.mac as argument.

This is how I've been formatting slurm scripts to parse bash variables as job names.

#!/bin/bash
MYVAR=$1

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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