Wenn Sie nur die Ausgabe von squeue
zusammenfassen möchten , wie wäre es mit:
squeue -u <username> | awk '
BEGIN {
abbrev["R"]="(Running)"
abbrev["PD"]="(Pending)"
abbrev["CG"]="(Completing)"
abbrev["F"]="(Failed)"
}
NR>1 {a[$5]++}
END {
for (i in a) {
printf "%-2s %-12s %d\n", i, abbrev[i], a[i]
}
}'
was so etwas ergibt wie:
R (Running) 1
PD (Pending) 4
Erläuterungen:
- Die
job state
wird gemäß dem Standardformat vonsqueue
im 5. Feld angenommen . - Dann zählt das Skript das Auftreten jedes Auftragsstatuscodes mit Ausnahme der ersten Zeile, die den Header enthält.
- Schließlich wird die Anzahl der einzelnen Jobstatuscodes gemeldet.
Fügen Sie der Einfachheit halber die folgenden Zeilen zu Ihrem .bash_aliases
hinzu oder .bashrc
(der Dateiname kann vom System abhängen):
function summary() {
squeue "[email protected]" | awk '
BEGIN {
abbrev["R"]="(Running)"
abbrev["PD"]="(Pending)"
abbrev["CG"]="(Completing)"
abbrev["F"]="(Failed)"
}
NR>1 {a[$5]++}
END {
for (i in a) {
printf "%-2s %-12s %d\n", i, abbrev[i], a[i]
}
}'
}
Dann können Sie den Befehl einfach mit summary [option]
aufrufen , wobei [option]
akzeptiert Optionen bis squeue
bei Bedarf (meistens unnötig).
Hoffe das hilft.
Ich würde "Schnellbefehl" anders interpretieren. Zusätzlich würde ich -r für Fälle hinzufügen, in denen Sie Job-Arrays verwenden:
squeue -u <username> -h -t pending,running -r | wc -l
Option -h entfernt den Header "wc -l" (word count) zählt die Zeilen der Ausgabe. Eventuell verwende ich es mit watch
watch 'squeue -u <username> -h -t pending,running -r | wc -l'