Alle Slurm-Jobs mit einer Job-ID größer X abbrechen

Manchmal laufen gleichzeitig jede Menge Slurm-Jobs aus verschiedenen Projekten, manche schon seit Tagen, andere gerade erst abgeschickt, und dann merkt man: Mist, die 100 Jobs, die ich gerade gestartet habe, sind falsch und müssen abgebrochen werden. Leider gibt es dafür keinen Slurm-Befehl, man braucht ein kleines Skript.

Das folgende Skript nimmt eine Slurm-Job-ID entgegen und bricht alle Jobs mit größerer ID ab (die dem angemeldeten Benutzer gehören …).

#!/bin/bash

declare -a jobs=()

if [ -z "$1" ] ; then
    echo "Minimum Job Number argument is required.  Run as '$0 jobnum'"
    exit 1
fi

minjobnum="$1"

myself="$(id -u -n)"

for j in $(squeue --user="$myself" --noheader --format='%i') ; do
  if [ "$j" -gt "$minjobnum" ] ; then
    jobs+=($j)
  fi
done

scancel "${jobs[@]}"

Speichert man es z. B. als killLarger.sh irgendwo im PATH, kann man es von überall aus nutzen und Slurm-Jobs mit größerer ID abbrechen.

,