Вы передаете слишком мало байтов в каждом вызове к send
или write
. Необходимо попытаться передать по крайней мере 2 КБ за вызов, или лучше, 4 КБ за вызов. Если возможно, накопите все логическое сообщение и отправьте его сразу. Это будет сохранять системные вызовы, упаковывать Ваши пакеты более эффективно и препятствовать, задержал ACK уничтожить Вашу задержку.
Необходимо сократить объемы производства столбцов ps
к минимуму, т.е. запросу только имя пользователя здесь - это упрощает последующую обработку.
Например:
$ ps -eo user=
распечатает владельца всех в настоящее время рабочих процессов (=
подавляет заголовок).
Простой способ получить счета для каждого пользователя:
$ ps -eo user= | sort | uniq -c
1 dovecot
1 messagebus
1 mpd
1 polkitd
2 postfix
121 root
27 me
Можно затем отфильтровать это, как Вы желаете:
$ ps -eo user= | sort | uniq -c | awk '$1 > 42 {print $2}'
root
С пределом в переменной:
$ N=42
$ ps -eo user= | sort | uniq -c | awk -v limit="$N" '$1 > limit {print $2}'
root
sort -nrk 1
– l0b0 19.03.2013, 18:08sort -rn
сделает то же какsort -rnk1
, с тех пор-n
игнорирует начальные пробелы так или иначе. – Stéphane Chazelas 19.03.2013, 18:16