slurm - 取消在某个日期之前提交或 JOBID 低于给定整数的作业
问题描述
我已经意识到使用我以前版本的软件提交的作业由于错误而没有用,所以我想取消它们。但是,我也有一些新的工作,我想继续运行。所有作业都具有相同的作业名称并在同一分区中运行。
我编写了以下脚本来取消 ID 低于给定 ID 的作业。
#!\bin\bash
if [ $1 ]
then
MAX_JOBID=$1
else
echo "An integer value is needed"
exit
fi
JOBIDLIST=$(squeue -u $USER -o "%F")
for JOBID in $JOBIDLIST
do
if [ "$JOBID" -lt "$MAX_JOBID" ]
then
echo "Cancelling job "$JOBID
scancel $JOBID
fi
done
我会说这是开发软件的人经常遇到的情况,我想知道是否有使用 slurm 命令的直接方法。或者,您是否使用一些技巧,例如将软件提交 ID 附加到作业名称来克服这种情况?
解决方案
不幸的是,在这种情况下没有直接的方法可以取消作业。
或者,就像您指出的那样,通过添加软件版本/提交以及作业名称来命名作业很有用。在这种情况下,您可以使用,scancel --name=JOB_NAME_VERSION
取消具有该作业名称的所有作业。
此外,如果可以使用新提交的作业,则可以hold
使用取消scontrol hold <jobid>
所有作业PENDING
scancel --state=PENDING
在我的情况下,我使用了类似的方法(如你的方法),squeue
将输出通过管道传输到awk
并取消了我想要删除的前 N 个作业。它是一个单行脚本。
像这样的东西:
例如:squeue arguments | awk 'NR>=2 && NR<=N{print $1}' | xargs /usr/bin/scancel
推荐阅读
- java - @ExceptionHandler 没有捕获 MethodArgumentNotValidException
- entity - 如何解决一对多关系表外键字段为空?
- r - 错误:“as.Date(20110505, %Y%”中出现意外 SPECIAL
- angularjs - 带有函数作为文件名的 img src
- powershell - 带有 CosmosDB 的 Powershell Azure 函数
- beautifulsoup - 虚拟环境中没有名为“bs4”的模块
- r - 如何对齐交叉栏中的标签
- java - 如何在 2 个类中使用枚举并将 Java 特定类型存储在属性文件中
- css - 在所有现代浏览器中工作相同的背景图像之间的转换?
- python - CartoPy 中绘制轮廓的插值方法