使用slurm job id

use*_*346 20 linux hpc batch-processing slurm

当我在集群上启动计算时,我通常会有一个单独的程序在最后进行后处理:

sbatch simulation
sbatch --dependency=afterok:JOBIDHERE postprocessing
Run Code Online (Sandbox Code Playgroud)

我想避免错误输入并自动插入好的作业ID.任何的想法?谢谢

dam*_*ois 30

你可以这样做:

RES=$(sbatch simulation) && sbatch --dependency=afterok:${RES##* } postprocessing
Run Code Online (Sandbox Code Playgroud)

RES变量将举行的结果sbatch命令,有点像Submitted batch job 102045.该构造${RES##* }隔离了最后一个单词(请参阅此处的更多信息),在当前情况下是作业ID.该&&部分确保您在第一次提交失败的情况下不尝试提交第二个作业.

  • 请注意,在最新版本的Slurm中,`sbatch`有一个`--parsable`参数,因此只返回jobid,将其简化为`RES = $(sbatch --parsable simulation). (12认同)
  • 请注意,在联合集群上,`sbatch` 将提供集群名称以及作业 ID。 (3认同)
  • 请注意,使用“--parsable”标志您可能会得到一个逗号分隔的列表。从 `sbatch` 的手册页中: `--parsable` 仅输出作业 ID 号和集群名称(如果存在)。这些值由分号分隔。错误仍然会显示。 (3认同)