Как: Найти Топ Процессов Использующих Память в Linux

Довольно распространенной является ситуация, когда на сервере заканчивается свободная оперативная память и необходимо узнать какие процессы больше всего используют RAM и swap.

В данной небольшой заметке приводятся две идентичные по своей сути команды, с помощью которых можно найти и отсортировать процессы по количеству потребляемой оперативной памяти в Linux.

Данные команды успешно работают в: Linux Mint, Ubuntu, Debian, CentOS, RHEL.

Используйте любую из приведенных ниже команд, чтобы вывести список из топ 10 наиболее активных процессов (включая дочерные), которые использую больше всего оперативной памяти на Linux сервере.

Какие Процессы Используют Всю RAM в Linux

Используйте следующую команду, чтобы найти топ процессов упорядоченных по используемой памяти, в мегабайтах (MB):

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 | sort -rn \
| awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'

Пример: Просто скопируйте приведенную выше команду в терминал и нажмите ENTER, чтобы отобразить топ 10 процессов, упорядоченных по количеству потребляемой памяти. Вы должны получить подобный результат:

admin@phantom ~ $ 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 | sort -rn \
| awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'

1047MB	firefox
648MB	VirtualBox
177MB	thunderbird
119MB	Xorg
82MB	python
82MB	remmina
60MB	pidgin.orig
48MB	caja
47MB	apache2
33MB	puppet

Упорядочить Процессы по Используемой Памяти в Linux

Используйте следующую команду, чтобы отобразить список процессов, наиболее активно использующих память, в мегабайтах (MB):

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

Пример: Просто скопируйте приведенную выше команду в терминал и нажмите ENTER, чтобы узнать какие процессы используют всю RAM и весь swap. Вы должны получить подобный результат:

admin@phantom ~ $ ps axo rss,comm,pid \
| awk '{ proc_list[$2] += $1; } END \
{ for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc],proc); }}' \
| sort -n | tail -n 10 | sort -rn \
| awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'

1022MB	firefox
648MB	VirtualBox
177MB	thunderbird
119MB	Xorg
82MB	python
82MB	remmina
60MB	pidgin.orig
48MB	caja
47MB	apache2
33MB	puppet