Sbatch:传递作业名称作为输入参数

Lae*_*tis 9 slurm

我有以下脚本用slurm提交作业:

#!/bin/sh
#!/bin/bash
#SBATCH -J $3 #job_name 
#SBATCH -n 1 #Number of processors
#SBATCH -p CA 

nwchem $1 > $2
Run Code Online (Sandbox Code Playgroud)

第一个参数($ 1)是我的输入,第二个($ 2)我的输出,我想第三个($ 3)确实是我的工作名称.如果我喜欢这样,那么工作名称是'$ 3'.我怎样才能将作业名称作为脚本的参数?

谢谢

dam*_*ois 8

SBATCH指令被shell视为注释,并且不执行变量替换$3.有几种行动方案:

选项1:-J在命令行上传递 参数:

sbatch -J thejobname submission_script.sh input.data output.res
Run Code Online (Sandbox Code Playgroud)

选项2:通过传递脚本stdin(取代位置参数$1,$2由名为的,等)

IN=input.data OUT=output.res NAME=thejobname <submission_script.sh sbatch 
Run Code Online (Sandbox Code Playgroud)

选项3:编写包装器

#!/bin/bash
sbatch <<EOT
#!/bin/sh
#SBATCH -J $3 #job_name 
#SBATCH -n 1 #Number of processors
#SBATCH -p CA 

nwchem $1 > $2
EOT
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

submit.sh input.data output.red thejobname
Run Code Online (Sandbox Code Playgroud)

另请注意,第二个shebang(#!/bin/bash)是无用的,并被(父)shell忽略.