命令行参数未在sbatch中传递

时间:2016-10-04 02:24:28

标签: python command-line-arguments slurm

我正在尝试使用SLURM作业调度程序提交作业,并且发现当我使用--export=VAR=VALUE语法时,我的一些变量未被传递(通常是{{1的第一个实例中的变量) }})。我的理解是我需要为每个变量指定export,例如

--export=...

我的脚本“run.py”如下所示:

sbatch --export=build=true --export=param=p100_256 run.py

我更愿意提交一个python脚本,因为我现有的所有脚本(以前用过的PBS)已经在python中了,我不想在shell脚本中重写它们。通过一个简短的例子可以最好地证明我的问题

首先,

#! /usr/bin/env python                                                                                                                                                                                                      
import os,fnmatch

print(os.environ["SLURM_JOB_NAME"])
print(os.environ["SLURM_JOB_ID"])

print(fnmatch.filter(os.environ.keys(),"b*"))
print(fnmatch.filter(os.environ.keys(),"p*"))

生成一个包含以下内容的日志文件:

> sbatch --export=build=true --export=param=p100_256 run.py
> Submitted batch job 2249581

如果我颠倒'build'和'param'的run.py 2249581 [] ['param'] 标志的顺序,

export

然后日志文件现在看起来像

> sbatch --export=param=true --export=build=p100_256 run.py
> Submitted batch job 2249613

表示只传递run.py 2249613 ['build'] [] 标志的最终实例。如果我添加export的第三个实例,

export

然后日志文件返回,

 > sbatch --export=param=1 --export=build=p100_256 --export=build_again=hello  run.py
 > Submitted batch job 2249674

所有人都知道为什么只传递run.py 2249674 ['build_again'] [] 的最终实例?我的语法不正确吗?我是否需要指定其他标志?

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,看起来我的语法不正确。我在文档中错过了其他变量应以逗号分隔并使用单个export标志指定,例如。

> sbatch --export=build=true,param=p100_256 run.py

因此,每次指定export时,必须替换以前的export个实例。