Если вы просто хотите суммировать вывод squeue
, как насчет:
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]
}
}'
, что дает что-то вроде:
R (Running) 1
PD (Pending) 4
Пояснения:
- Предполагается, что
job state
находится в 5-м поле в соответствии с форматом по умолчанию squeue
.
- Затем скрипт подсчитывает внешний вид каждого кода состояния задания, за исключением 1-й строки, которая включает заголовок.
- Наконец, он сообщает счетчик каждого кода состояния задания.
Для удобства добавьте следующие строки в .bash_aliases
или .bashrc
(имя файла может зависеть от системы):
function summary() {
squeue "$@" | 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]
}
}'
}
Затем вы можете вызвать команду просто с помощью summary [option]
, где [option]
принимает опции к squeue
, если необходимо (в основном, не нужно).
Надеюсь, это поможет.