Sbatch:将作业名称作为输入参数传递
Sbatch: pass job name as input argument
我有以下脚本来使用 slurm 提交作业:
#!/bin/sh
#!/bin/bash
#SBATCH -J #job_name
#SBATCH -n 1 #Number of processors
#SBATCH -p CA
nwchem >
第一个参数 ($1) 是我的输入,第二个参数 ($2) 是我的输出,我希望第三个 ($3) 是我的工作名称。如果我这样做,作业名称是“$3”。我怎样才能继续将作业名称作为脚本的参数?
谢谢
SBATCH 指令被 shell 视为注释,它不会对 </code> 执行变量替换。有几种做法:</p>
<p>选项 1:在命令行上传递 <code>-J
参数:
sbatch -J thejobname submission_script.sh input.data output.res
选项 2:通过 stdin
传递脚本替换位置参数(</code>、<code>
等)
IN=input.data OUT=output.res NAME=thejobname <submission_script.sh sbatch
选项 3:编写包装器
#!/bin/bash
sbatch <<EOT
#!/bin/sh
#SBATCH -J #job_name
#SBATCH -n 1 #Number of processors
#SBATCH -p CA
nwchem >
EOT
并像这样使用它:
submit.sh input.data output.red thejobname
另请注意,第二个 shebang (#!/bin/bash
) 是无用的并被(父级)忽略 shell。
我有以下脚本来使用 slurm 提交作业:
#!/bin/sh
#!/bin/bash
#SBATCH -J #job_name
#SBATCH -n 1 #Number of processors
#SBATCH -p CA
nwchem >
第一个参数 ($1) 是我的输入,第二个参数 ($2) 是我的输出,我希望第三个 ($3) 是我的工作名称。如果我这样做,作业名称是“$3”。我怎样才能继续将作业名称作为脚本的参数?
谢谢
SBATCH 指令被 shell 视为注释,它不会对 </code> 执行变量替换。有几种做法:</p>
<p>选项 1:在命令行上传递 <code>-J
参数:
sbatch -J thejobname submission_script.sh input.data output.res
选项 2:通过 stdin
传递脚本替换位置参数(</code>、<code>
等)
IN=input.data OUT=output.res NAME=thejobname <submission_script.sh sbatch
选项 3:编写包装器
#!/bin/bash
sbatch <<EOT
#!/bin/sh
#SBATCH -J #job_name
#SBATCH -n 1 #Number of processors
#SBATCH -p CA
nwchem >
EOT
并像这样使用它:
submit.sh input.data output.red thejobname
另请注意,第二个 shebang (#!/bin/bash
) 是无用的并被(父级)忽略 shell。