Si vous souhaitez simplement résumer la sortie de squeue
, que diriez-vous :
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]
}
}'
qui donne quelque chose comme :
R (Running) 1
PD (Pending) 4
Explications :
- Le
job state
est supposé être dans le 5ème champ selon le format par défaut desqueue
. - Ensuite, le script compte l'apparence de chaque code d'état de tâche, à l'exception de la 1ère ligne qui inclut l'en-tête.
- Enfin, il indique le nombre de chaque code d'état de tâche.
Afin de le rendre pratique, ajoutez les lignes suivantes à votre .bash_aliases
ou .bashrc
(le nom du fichier peut dépendre du système) :
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]
}
}'
}
Ensuite, vous pouvez invoquer la commande simplement avec summary [option]
, où [option]
accepte les options de squeue
si nécessaire (la plupart du temps inutile).
J'espère que cela vous aidera.
J'interpréterais la "commande rapide" différemment. De plus, j'ajouterais -r pour les cas où vous utilisez des tableaux de tâches :
squeue -u <username> -h -t pending,running -r | wc -l
l'option -h supprime l'en-tête "wc -l" (nombre de mots) compte la ligne de la sortie. Finalement, je l'utilise avec watch
watch 'squeue -u <username> -h -t pending,running -r | wc -l'