Si solo desea resumir la salida de squeue
, que tal:
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]
}
}'
que produce algo como:
R (Running) 1
PD (Pending) 4
Explicaciones:
- El
job state
se supone que está en el quinto campo según el formato predeterminado desqueue
. - Luego, el script cuenta la aparición de cada código de estado de trabajo, excepto la primera línea que incluye el encabezado.
- Finalmente informa el conteo de cada código de estado de trabajo.
Para que sea útil, agregue las siguientes líneas a su .bash_aliases
o .bashrc
(el nombre del archivo puede depender del sistema):
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]
}
}'
}
Entonces puedes invocar el comando solo con summary [option]
, donde [option]
acepta opciones para squeue
si es necesario (mayormente innecesario).
Espero que esto ayude.
Yo interpretaría el "comando rápido" de manera diferente. Además, agregaría -r para los casos en que esté utilizando matrices de trabajo:
squeue -u <username> -h -t pending,running -r | wc -l
opción -h elimina el encabezado "wc -l" (recuento de palabras) cuenta la línea de la salida. Eventualmente lo estoy usando con el reloj
watch 'squeue -u <username> -h -t pending,running -r | wc -l'