假设我有以下简单的 bash 脚本,我想通过 SLURM 提交到批处理服务器:
#!/bin/bash
#SBATCH -o "outFile"$1".txt"
#SBATCH -e "errFile"$1".txt"
hostname
exit 0
在这个脚本中,我只想hostname
在一个我通过命令行控制其全名的文本文件上编写输出,如下所示:
login-2:jobs$ sbatch -D `pwd` exampleJob.sh 1
Submitted batch job 203775
不幸的是,我的最后一个命令行参数 (1) 似乎没有通过 sbatch 解析,因为创建的文件没有我要查找的后缀,并且字符串“$1”按字面意思解释:
login-2:jobs$ ls
errFile$1.txt exampleJob.sh outFile$1.txt
我环顾了SO和其他地方的地方,但我没有任何运气。本质上,我正在寻找的是等效于启用 Torque 的集群-v
中的实用程序开关。qsub
编辑:正如在底层评论线程中提到的那样,我以艰难的方式解决了我的问题:我没有将一个脚本多次提交到批处理服务器,每个脚本都有不同的命令行参数,而是创建了一个“主脚本”简单地将相同的内容回显并重定向到不同的脚本,每个脚本的内容由传递的命令行参数更改。然后我通过 . 将所有这些提交到我的批处理服务器sbatch
。但是,这并不能回答原始问题,因此我犹豫是否将其添加为我的问题的答案或将此问题标记为已解决。