[英]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.