我必须为集群运行多个sbatch slurm脚本。假设我有50个sbatch文件,我在终端中按顺序运行它们(我使用Ubundu),如下所示:
sbatch file1.sbatch
sbatch file2.sbatch
.
.
.
sbatch file50.sbatch我想简化这50个不同的命令,使其在单个命令中运行。由于我是新接触终端和集群的人,我真的不知道如何处理这个问题。请给我一些执行此操作的解决方案(我猜我需要使用一些for loop语句,但我对哪种语法有疑问)。我完全迷惑了,一些相关的文档可能也会有所帮助。
谢谢。
更新:我尝试了以下脚本:
#!/bin/bash
for i in {1..3}
do
sbatch layer$i.sbatch
done 但是,它并没有创造出单独的就业机会。仅将单个作业作为整体提交。所以,这对我不起作用。
$ ~/Marabou% sbatch call_sbatch.sbatch
Submitted batch job 4576049 谢谢。
更新:
下面的脚本可以工作:
import os
os.system ("sbatch filename1.sbatch")
os.system ("sbatch filename2.sbatch")
发布于 2019-08-19 21:05:23
您准备的代码应该在交互式shell中运行,而不是启动到队列中。
直接运行你的代码:
$ sh call_sbatch.sbatch或者,如果你的文件是可执行的,
$ ./call_sbatch.sbatch它应该使用您创建的循环运行内部行,该循环将向队列发送您感兴趣的作业(在您的示例代码中,有三个作业: layer1.sbatch、layer2.sbatch和layer3.sbatch)。
https://stackoverflow.com/questions/57020382
复制相似问题