Как сортировать процессы по использованию памяти в top на Linux

Определить, какие процессы занимают больше всего памяти, в Linux не так просто, как в Windows. Но команда top встроена почти в любой дистрибутив и позволяет увидеть, сколько памяти использует каждый процесс. По умолчанию вывод не отсортирован по использованию памяти, однако изменить порядок можно в несколько нажатий.
Быстрый пример
- Откройте терминал (обычно Ctrl + Alt + T).
- Введите команду
topи нажмите Enter. - Нажмите Shift + M — столбец
%MEMотобразит процессы в порядке убывания использования памяти. - Для выхода нажмите Q.

Нажатие Shift + M упорядочивает список по столбцу %MEM, показывая сначала самые «тяжёлые» приложения по потреблению оперативной памяти. Повторное нажатие обновляет сортировку по текущим значениям.

Подробные шаги
Открытие терминала
На большинстве окружений рабочего стола достаточно нажать Ctrl + Alt + T или найти «Терминал» в меню приложений.
Запуск top
В терминале введите:
topЭто откроет интерактивный интерфейс с таблицей, где видно PID, USER, %CPU, %MEM, VIRT, RES и другие колонки.
Сортировка по памяти
Нажмите Shift + M (заглавная M). После этого строки перестроятся так, что вверху будут процессы с наибольшим %MEM. Обратите внимание на столбцы:
%MEM— процент от общей физической памяти.RES— реальный объём RAM, занимаемый процессом (без учёта swap и общей памяти).VIRT— виртуальная память процесса.SHR— разделяемая память.
Выход
Нажмите Q, чтобы выйти из интерфейса top и вернуться в командную строку.
Когда это не подходит
- На минималистичных системах top может быть отсутствующим (редко) — установите пакет procps или используйте
ps. - Для контейнеров Docker/систем с cgroups нужно смотреть статистику внутри контейнера или с помощью
docker stats/podman stats, поскольку top на хосте может показывать агрегированные значения. - top показывает моментальные значения; для длительного мониторинга используйте системные метрики или инструменты сбора (Prometheus, collectd).
Альтернативные инструменты и команды
- htop — интерактивный и удобный, поддерживает сортировку мышью и клавишами:
sudo apt install htop # Debian/Ubuntu
htop- ps — быстрый однострочный снимок, полезно в скриптах:
ps aux --sort=-%mem | head -n 20- free — вывод общего объёма памяти:
free -h- vmstat, smem — для более детального анализа распределения памяти.
Сниппет: быстро найти топ-5 по памяти
ps aux --sort=-%mem | awk 'NR<=6 {print}'Этот однострочник показывает заголовок и первые 5 процессов по %MEM.
Ментальные модели и краткие правила
- %MEM указывает долю от всей физической RAM; RES показывает реальный размер в RAM — смотрите оба.
- Высокий VIRT без высокого RES часто означает, что процесс зарезервировал адресное пространство, но реально не использует память.
- Большой RES + высокий SHR может означать, что память разделяется между процессами (например, общие библиотеки).
Короткая методология диагностики
- Отсортируйте процессы по памяти (
Shift + Mв top иps aux --sort=-%mem). - Посмотрите RES и %MEM — это реальные потребления.
- Проверьте, не использует ли процесс swap (
swapon -sиfree -h). - Если процесс неожиданно большой — попробуйте перезапустить службу безопасно (
systemctl restartили kill с осторожностью).
Критерии приёмки
- Видно 5 процессов с наибольшим %MEM.
- Для каждого процесса доступны PID, пользователь и RES.
- Вы понимаете, можно ли безопасно перезапустить или остановить процесс.
Ролевые чек-листы
Администратор:
- Открыл top/htop и отсортировал по памяти.
- Просмотрел связанные журналы (
journalctl -u). - Если критично, перезапустил службу с учётом зависимостей.
Пользователь настольной системы:
- Определил тяжёлое приложение (браузер, VM) и закрыл лишние вкладки.
- Перезапустил приложение или вышел из сеанса.
Небольшой глоссарий (1 строка на термин)
- %MEM — процент от общей физической ОЗУ, используемый процессом.
- RES — реальная (resident) память в RAM, занятая процессом.
- VIRT — виртуальная память, включая своп и зарезервированное пространство.
- SHR — объём разделяемой памяти.
Краткое руководство по реагированию (runbook)
- Идентифицировать процесс (PID) в top или ps.
- Посмотреть, к какому сервису он относится:
systemctl statusилиps -p.-o cmd= - Попробовать мягко перезапустить сервис:
systemctl restart. - Если сервис не отвечает — мягко завершить процесс:
kill, при неэффективностиkill -9(последний шаг — риск потери данных).
Важно: всегда сначала сохраняйте/закрывайте данные, если процесс принадлежит пользователю.
Примеры, когда сортировка по памяти вводит в заблуждение
- Большой VIRT и маленький RES — процесс не потребляет много реальной памяти.
- Много процессов с одинаковым базовым изображением (shared libraries) покажут высокий SHR; суммировать SHR для оценки общего использования нельзя.
Итог
Команда top — быстрый и доступный способ увидеть, какие процессы потребляют больше всего памяти. Для скриптов и удалённых снимков используйте ps, для интерактивной работы — htop. Всегда сверяйте %MEM и RES и учитывайте влияние разделяемой памяти и swap.
Авторские заметки:
- Если вам нужно постоянное визуальное отображение — рассмотрите Conky или системный монитор в вашем окружении.
Похожие материалы
Как блокировать PUA в Windows Defender
Угрозы iPhone и iPad: что знать и как защититься
Google Home: установка, управление и проблемы
30-дневные финансовые вызовы: план и чек-листы
Ретро‑игры на Linux с Wine и PlayOnLinux