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

时间:2016-03-29 08:31:56

标签: slurm

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

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

nwchem $1 > $2

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

由于

1 个答案:

答案 0 :(得分:7)

SBATCH指令被shell视为注释,它不会在$3上执行变量替换。有几种行动方案:

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

sbatch -J thejobname submission_script.sh input.data output.res

选项2:通过stdin传递脚本,将位置参数($1$2等替换为已命名的位置参数)

IN=input.data OUT=output.res NAME=thejobname <submission_script.sh sbatch 

选项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

并像这样使用它:

submit.sh input.data output.red thejobname

另请注意,第二个shebang(#!/bin/bash)没用,被(父)shell忽略。