Se vuoi solo riassumere l'output di squeue
, che ne dici di:
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]
}
}'
che produce qualcosa come:
R (Running) 1
PD (Pending) 4
Spiegazioni:
- Il
job state
si presume che sia nel 5° campo in base al formato predefinito disqueue
. - Quindi lo script conta l'aspetto di ciascun codice di stato del lavoro, ad eccezione della prima riga che include l'intestazione.
- Infine riporta il conteggio di ciascun codice di stato del lavoro.
Per renderlo utile, aggiungi le seguenti righe al tuo .bash_aliases
o .bashrc
(il nome del file può dipendere dal 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]
}
}'
}
Quindi puoi invocare il comando solo con summary [option]
, dove [option]
accetta opzioni fino a squeue
se necessario (per lo più non necessario).
Spero che questo aiuti.
Interpreterei "comando rapido" in modo diverso. Inoltre aggiungerei -r per i casi in cui utilizzi job array:
squeue -u <username> -h -t pending,running -r | wc -l
l'opzione -h rimuove l'intestazione "wc -l" (conteggio parole) conta la riga dell'output. Alla fine lo sto usando con watch
watch 'squeue -u <username> -h -t pending,running -r | wc -l'