Linux

Команда top в Linux: полное руководство по мониторингу системы

Это руководство поможет вам освоить мощный системный монитор top: от базового интерфейса до продвинутых техник фильтрации и управления процессами. Вы научитесь быстро находить 'прожорливые' приложения и эффективно контролировать сервер или рабочую станцию.

15-30 мин
Средняя
Применимо к:Ubuntu 20.04+Debian 11+CentOS 8+RHEL 9+any Linux with procps-ng

Введение / Зачем это нужно

Команда top — это основной, всегда доступный инструмент для быстрого мониторинга системы в реальном времени в Linux. В отличие от графических диспетчеров задач, top работает прямо в терминале и показывает, какие процессы потребляют больше всего ресурсов (CPU, памяти), общую нагрузку на систему и время её работы. Освоение top критически важно для системных администраторов, разработчиков и любого, кто работает с серверами или хочет понять, почему их компьютер стал медленным.

После прохождения этого гайда вы сможете:

  • Читать и понимать вывод top.
  • Находить процессы-"пожирателей" ресурсов.
  • Фильтровать и сортировать процессы по нужным критериям.
  • Управлять процессами (менять приоритет, завершать) прямо из интерфейса.
  • Настроить отображение под свои задачи.

Требования / Подготовка

  1. Доступ к терминалу Linux (локально или через SSH).
  2. Команда top предустановлена практически во всех дистрибутивах в составе пакета procps-ng или procps. Если её нет (маловероятно), установите:
    • Debian/Ubuntu: sudo apt update && sudo apt install procps
    • RHEL/CentOS/Fedora: sudo yum install procps-ng или sudo dnf install procps-ng
  3. Права: Для просмотра всех процессов (включая системные) обычно нужны права root (sudo top). Для управления процессами, не принадлежащими вашему пользователю, тоже потребуются повышенные привилегии.
  4. Базовое понимание того, что такое процесс (PID), потребление CPU и памяти (RAM/Swap).

Пошаговая инструкция

Шаг 1: Запустите top и поймите интерфейс

Введите в терминале команду top и нажмите Enter.

top

Вы увидите экран, разделённый на две основные области:

  1. Верхняя часть (Summary Area) — сводка по системе:
    • top — строка с версией, временем работы системы (up), количеством пользователей (users) и средней нагрузкой (load average: 1, 5, 15 мин).
    • Tasks: — общее количество процессов, их состояние (running, sleeping, stopped, zombie).
    • %Cpu(s): — использование процессора: us (user), sy (system), ni (nice), id (idle), wa (wait/I/O), hi (hardware IRQ), si (software IRQ), st (steal time — для виртуализации).
    • KiB Mem: и KiB Swap: — использование оперативной памяти и swap-файла/раздела (total, used, free, buff/cache).
  2. Нижняя часть (Processes Area) — список процессов (по умолчанию отсортирован по %CPU). Ключевые столбцы:
    • PID — идентификатор процесса.
    • USER — владелец процесса.
    • %CPU — доля использования CPU этим процессом.
    • %MEM — доля использования физической памяти.
    • TIME+ — общее время использования CPU с момента запуска.
    • COMMAND — имя команды/процесса.

💡 Совет: Нажмите h или ? в любой момент, чтобы увидеть справку по всем интерактивным командам.

Шаг 2: Освойте основное управление и сортировку

top — интерактивная программа. Управление осуществляется однократным нажатием клавиш.

  • Сортировка (самая частая операция):
    • P — сортировать по %CPU (по умолчанию).
    • M — сортировать по %MEM.
    • N — сортировать по PID (по возрастанию).
    • T — сортировать по TIME+ (времени CPU).
  • Фильтрация (показать только нужное):
    • Нажмите O (заглавная латинская O). Появится поле для ввода условия.
    • Чтобы показать процессы только пользователя nginx, введите: USER=nginx и нажмите Enter.
    • Чтобы показать процессы, чей %CPU превышает 5.0, введите: %CPU>5.0.
    • Чтобы сбросить фильтр, нажмите O и введите =, затем Enter.
  • Изменение отображаемых полей:
    • Нажмите f. Вы попадёте в меню выбора полей.
    • Стрелками вверх/вниз перемещайтесь по списку.
    • Пробел — выбрать/снять поле (отмеченные * будут показаны).
    • Справа от выбранных полей можно изменить их порядок (стрелки <- и ->).
    • Готово? Нажмите Enter, затем q для выхода из меню.

Шаг 3: Управляйте процессами прямо из top

Это одна из самых мощных возможностей.

  • Завершить (убить) процесс:
    1. Запомните PID нужного процесса (или найдите его через фильтр).
    2. Нажмите k.
    3. Введите PID и нажмите Enter.
    4. Введите номер сигнала (по умолчанию 15SIGTERM, вежливое завершение). Для принудительного завершения используйте 9 (SIGKILL). Нажмите Enter.

    ⚠️ Важно: Сигнал 9 (SIGKILL) не даёт процессу возможность корректно завершиться и сохранить данные. Используйте только если SIGTERM не помог.

  • Изменить приоритет (nice) процесса:
    1. Нажмите r.
    2. Введите PID процесса.
    3. Введите новое значение nice (от -20 — самый высокий приоритет, до 19 — самый низкий). Обычно увеличивают nice (снижают приоритет) для фоновых задач, чтобы не мешать интерактивным.
    4. Нажмите Enter.

Шаг 4: Настройте интерфейс и используйте полезные хоткеи

  • z — включить/выключить цветовую индикацию (очень помогает визуально выделить активные процессы).
  • x — выделить столбец, по которому идёт сортировка (по умолчанию он подсвечивается).
  • b — включить/выключить жирный текст/цвет для активных (использующих CPU) процессов.
  • u — быстро отфильтровать процессы по имени пользователя (введите имя или оставьте пустым для всех).
  • V — переключиться в режим дерева процессов (forest view), чтобы увидеть иерархию (родительские/дочерние процессы). Очень полезно для понимания, какой демон породил какой процесс.
  • c — переключить отображение команды: полный путь и аргументы (/usr/bin/python3 script.py) или только имя команды (python3).
  • Space — немедленно обновить экран (если вы на паузе).
  • s — изменить задержку обновления экрана (в секундах, по умолчанию 3.0). Для более частых обновлений введите меньшее значение.
  • q — выйти из top.

Проверка результата

Вы успешно освоили top, если можете:

  1. За 10 секунд найти процесс с самым высоким %CPU и %MEM без использования мыши.
  2. Отфильтровать список, оставив только процессы пользователя postgres (или любого другого).
  3. Увидеть дерево дочерних процессов для systemd или sshd.
  4. Корректно завершить тестовый процесс (например, запущенный sleep 1000) с помощью k и сигнала 15.
  5. Сохранить статичный снимок состояния системы в файл командой top -b -n 1 > system_snapshot.txt и убедиться, что файл создался и содержит читаемый текст.

Возможные проблемы

  • Не вижу всех процессов / процессы другого пользователя.
    • Причина: Недостаточно прав.
    • Решение: Запустите top с sudo: sudo top. Будьте осторожны при управлении процессами от root.
  • Процессы с низким %CPU не отображаются, хотя их много.
    • Причина: По умолчанию top показывает только активные (с ненулевым %CPU или %MEM) или ограничивает количество строк под список. Также может быть активен фильтр.
    • Решение: Нажмите f и убедитесь, что поле A (VIRT) или другие не скрывают процессы. Сбросьте фильтр (O=). Увеличьте количество отображаемых строк (настройки могут зависеть от версии).
  • Не могу найти процесс по имени (например, nginx).
    • Причина: В колонке COMMAND может отображаться только имя бинарника (nginx), а не полная строка запуска. Или процесс находится в состоянии D (непрерываемый сон, часто из-за I/O) и не набирает %CPU.
    • Решение: Используйте фильтр по COMMAND (OCOMMAND=nginx). Или используйте c для переключения на отображение полной командной строки. Для поиска "спящих" процессов сортируйте по TIME+ или используйте более гибкий ps aux | grep nginx.
  • top не показывает сетевую активность процессов.
    • Причина: Стандартный top не имеет встроенных полей для сетевой статистики (in/out).
    • Решение: Для мониторинга сети используйте отдельные инструменты: nethogs, iftop, ss -tuna или netstat -tunap. Некоторые версии top (например, из пакета procps-ng на RHEL) могут иметь ограниченную поддержку полей сетевой статистики (n), но это нестандартно.
  • Не могу выйти из top, нажал случайную клавишу, интерфейс сломался.
    • Решение: Нажмите q для выхода. Если это не помогает, попробуйте Ctrl+C. В крайнем случае закройте терминал или окно SSH.
  • Хочу более наглядный интерфейс.
    • Решение: Установите htop (sudo apt install htop или sudo yum install htop). Это полноценная замена top с мышью, цветами и удобной навигацией.

Часто задаваемые вопросы

Как выйти из команды top?
Как отфильтровать процессы только определённого пользователя?
Чем top отличается от htop?
Как сохранить вывод top в файл?

Полезное

Запустите top и поймите интерфейс
Освойте основное управление и сортировку
Управляйте процессами прямо из top
Настройте интерфейс под себя и используйте полезные хоткеи

Эта статья помогла вам решить проблему?