首页 > 解决方案 > 如何按顺序运行多个 .sbatch 脚本

问题描述

我必须为集群运行多个 sbatch slurm 脚本。说,我有 50 个 sbatch 文件,我在终端中按顺序运行它们(正在使用 Ubundu),如下所示:

sbatch file1.sbatch  
sbatch file2.sbatch
.  
.  
.  
sbatch file50.sbatch

我想简化这 50 个不同的命令以在单个命令中运行。由于我是使用终端和集群的新手,我真的不知道如何解决这个问题。请建议我执行此操作的一些解决方案(我想我需要使用一些 for 循环语句,但我怀疑其中的语法)。我完全糊涂了,一些相关文件也可能会有所帮助。

谢谢你。

更新:我尝试了以下脚本:

#!/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")

标签: ubuntuterminalsbatch

解决方案


您准备的代码应该在交互式 shell 中运行,而不是启动到队列中。

直接运行你的代码:

$ sh call_sbatch.sbatch

或者,如果您的文件是可执行的,

$ ./call_sbatch.sbatch

它应该使用您创建的循环运行内部行,并且该循环会将您感兴趣的作业发送到队列(在您的示例代码中,三个作业:layer1.sbatch、layer2.sbatch 和 layer3.sbatch)。


推荐阅读