如何使用slurm上的if语句取消作业?

时间:2015-03-15 01:48:59

标签: bash slurm

我的bash脚本将比较并读取来自不同两个文件的两个值。如果它们不相等,脚本应该取消slurm上的作业。我想我应该得到这份工作证。但我不知道如何获取作业ID并在bash脚本中取消它。我怎么能这样做?

#!/bin/bash

#read the the first line (lets suppose a) from file1.txt
#read the the third line (lets suppose b) from file2.txt      
if  (a != b); then  
  # get the job-ID
  # cancel the job
 fi

2 个答案:

答案 0 :(得分:0)

这可能取决于本地环境设置。在我的情况下,当我向调度程序提交作业时,以下字符串将输出到stdout

Submitted batch job 1413273

您可以捕获此字符串并提取ID号,然后您可以使用该号码取消相关作业

id=$(sbatch run.qscript | awk '{print $4}')
if [ $a -ne $b ]; then
    scancel $id
fi

请注意,此处的比较符号假设ab是整数。如果它们是字符串,您应该使用

if [ "$a" != "$b" ]; then

答案 1 :(得分:0)

可以在SLURM_JOB_ID环境变量的提交脚本中检索slurm作业ID。所以你需要写:

scancel $SLURM_JOB_ID