我的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
答案 0 :(得分:0)
这可能取决于本地环境设置。在我的情况下,当我向调度程序提交作业时,以下字符串将输出到stdout
Submitted batch job 1413273
您可以捕获此字符串并提取ID号,然后您可以使用该号码取消相关作业
id=$(sbatch run.qscript | awk '{print $4}')
if [ $a -ne $b ]; then
scancel $id
fi
请注意,此处的比较符号假设a
和b
是整数。如果它们是字符串,您应该使用
if [ "$a" != "$b" ]; then
答案 1 :(得分:0)
可以在SLURM_JOB_ID
环境变量的提交脚本中检索slurm作业ID。所以你需要写:
scancel $SLURM_JOB_ID