Как получить список десяти процессов с наибольшим использованием памяти (с агрегацией дочерних процессов)

ps axo rss,comm,pid | awk '{ proc_list[$2]++; proc_list[$2 "," 1] += $1; } END { for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc "," 1],proc); }}' | sort -n | tail -n 10


Команда выводит список из 10 процессов, которые используют наибольшее количество оперативной памяти. Для этого используется пайп (|), который направляет вывод команды ps (отображающей информацию о текущих процессах) на вход команды awk.

Команда awk использует специальный алгоритм подсчета процессов и их потребления памяти. Каждый процесс задается идентификатором pid и именем comm, расход памяти измеряется в rss.

Аргументы команды ps o выставляют формат вывод информации о всех процессах: rss,comm,pid. С помощью awk создается хеш-таблица, хранящая информацию о расходе памяти для каждого процесса. В переменной процесса proc мы храним pid и имя процесса comm.

Далее происходит сортировка по количеству используемой памяти и вывод топ-10 процессов. Команда tail – выводит последние строки таблицы.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *