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.