簡體   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