【问题标题】:submit sbatch jobs in loop循环提交批量作业
【发布时间】:2018-11-29 00:20:00
【问题描述】:

我有一个 txt 文件(比如 jobs.txt),其中包含以下几行:

“sbatch -w node00x script.sh 1”
“sbatch -w node00z script.sh 10”
.
.
等等

我想知道是否可以像下面这样创建一个可执行的 bash 文件

#!/bin/bash

同时读取 -r 行;
逐行提交作业
完成

我可以执行并且将在各个节点中运行作业。我在这方面的知识非常有限。将不胜感激任何帮助。

【问题讨论】:

  • 为什么不. jobs.txtsource jobs.txt
  • 手动指定要在其上运行每个作业的计算节点是否有充分的理由?另外我怀疑您的用例确实适合工作数组;如果是这样的话,你可以大大简化你的整个过程。
  • @damienfrancois- 是的。我需要非常具体的节点。我的 script.sh 为任何将排队的特定节点设置了作业数组。你是对的。我也认为,即使这可以通过仔细创建作业阵列设置来实现。但我不是这方面的专家。

标签: bash shell slurm sbatch


【解决方案1】:

如果我理解正确,你只需要执行 eval 命令:

eval $line

【讨论】:

  • 这成功了!我唯一要做的就是删除引号。
  • 使用 tr 删除引号。
【解决方案2】:

在这些情况下我通常会做的是:

./jobs.txt

如果您已为该文件设置了执行权限(正如其扩展名所暗示的那样),请将其授予:

chmod u+x jobs.txt

如果有必要,我会在jobs.txt的头部添加:

#!/bin/bash

如果您想消除与文件名的任何混淆,请重命名:

mv jobs.txt jobs.sh

现在,您已经准备好提交工作负载了!

【讨论】:

  • 感谢您的出色解决方案!基本上它避免了创建额外的启动器脚本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 2018-04-30
  • 1970-01-01
  • 2021-08-01
  • 2018-04-30
  • 1970-01-01
相关资源
最近更新 更多