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 – выводит последние строки таблицы.
