Anass
Anass

Reputation: 271

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

Upvotes: 3

Views: 3143

Answers (3)

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"

Upvotes: 1

TexasDex
TexasDex

Reputation: 21

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

Upvotes: 1

damienfrancois
damienfrancois

Reputation: 59250

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.

Upvotes: 2

Related Questions