Sugiro que você extraia as informações necessárias de ps
, nada mais, e deixe awk
(não bash
) fazer o resto: grepping, comparações, formatação. Exemplo:
ps -ax --no-headers -o pid,vsz,stat,command |
awk -v lim=23000 '
# let awk do the grepping
/bash/ && !/awk/ {
# save first 3 fields
pid=$1
vsz=$2
stat=$3
# rest is command line, possibly spanning multiple fields
for (i=4;i<=NF;++i) $(i-3)=$i
NF-=3
# decide on color
if (vsz>lim) col="3[31m"
else if (vsz>lim/2) col="3[33m"
else col="3[32m"
# printout
printf("%s%-62s %10d KB %5s %6s%s\n",
col, $0, vsz, pid, stat, "3[0m")
}'
Ajuste os valores e adicione os cabeçalhos conforme necessário.