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 stateest 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'