Найти всех пользователей, которые имеют более N процессов и эхо их в оболочке

Я пишу скрипт в ksh. Мне нужно найти всех пользователей, которые имеют более N процессов и эхо их в оболочке. N считывается из ksh.

Я знаю, что я должен использовать ps -elf , но как его разобрать, найти пользователей с> N процессами и создать массив с ними? У меня небольшие проблемы с массивами в ksh. Может быть, простое решение может помочь мне вместо того, чтобы создавать массив. Один человек рекомендовал использовать

 ps -elf | awk '{a[$3]++;}END{for(i in a)if (a[i]>N)print i, a[i];}' N=3 

но это работает неправильно.

Вы должны уменьшить столбцы, выводимые 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