htop и btop: мониторинг процессов в Linux и FreeBSD

htop — интерактивный просмотрщик процессов для терминала, удобная замена top. Он показывает загрузку каждого ядра, память и swap, дерево процессов. Процессы можно сортировать и фильтровать мышью или клавишами, а нужному процессу — отправить сигнал, не набирая PID вручную. btop — более новый монитор: кроме процессов он рисует графики загрузки CPU, дисков и сети.

Сегодня htop есть в стандартных репозиториях почти всех систем. На Debian и Ubuntu — apt install htop, на AlmaLinux и Rocky Linux — dnf install htop после подключения EPEL, на FreeBSD — pkg install htop. Собирать из портов и подключать эмуляцию Linux, как приходилось на FreeBSD 8, больше не нужно.

Ниже — установка, клавиши, которые пригодятся каждый день, фильтры, дерево, сортировка, отличия от top и короткий разбор btop.

Установка htop

Debian и Ubuntu

apt update
apt install htop

Пакет лежит в основном репозитории (main). В Debian 12 это htop 3.2.x, в Debian 13 — 3.4.x, в Ubuntu 24.04 — 3.3.x. Для повседневной работы разница между ними несущественна.

AlmaLinux и Rocky Linux 9 и 10

В базовых репозиториях RHEL-систем htop нет, он лежит в EPEL — так было во времена CentOS 5 и так осталось сейчас. Подключаем EPEL и ставим:

dnf install epel-release
dnf install htop

EPEL собирается проектом Fedora и не заменяет пакеты из основных репозиториев, только добавляет новые. Поэтому подключать его безопасно. Подробнее о подключении EPEL и Remi и о том, когда нужен CRB, — в статье о репозиториях EPEL и Remi для AlmaLinux и Rocky Linux.

FreeBSD 14 и 15

pkg install htop

Если пакетов нет и вы собираете из портов:

cd /usr/ports/sysutils/htop
make install clean

Раньше htop на FreeBSD требовал смонтированную файловую систему linprocfs и слой совместимости с Linux (linux_base). Сборка падала с ошибкой «htop requires linprocfs to be mounted», и во многих инструкциях того времени не было способа её обойти. С версии 2.0 htop умеет FreeBSD нативно: данные берутся через системные вызовы sysctl и kvm. Поэтому linprocfs и Linux-эмуляцию ради htop включать не нужно. Если они остались в /etc/fstab и /etc/rc.conf от старых инструкций и больше ничем не используются, их можно убрать.

Если система старая и пакеты не ставятся из-за версии, сначала обновите её — см. статью об обновлении FreeBSD через freebsd-update.

Проверка

htop --version
# примерно так: htop 3.4.1

Экран htop: что где

Верхняя часть — счётчики (meters):

  • полоски по каждому ядру CPU. Цвета: синий — процессы с низким приоритетом (nice), зелёный — обычные пользовательские, красный — ядро. В подробном режиме (F2 → Display options → Detailed CPU time) добавляются отдельные цвета для iowait, прерываний и steal;
  • Mem и Swp — память и swap. Зелёным показана память процессов, синим — буферы, жёлтым или оранжевым — кеш. Кеш не «съеденная» память: ядро отдаст его по первому требованию;
  • Tasks — число процессов, потоков и сколько из них сейчас в состоянии running;
  • Load average — средняя нагрузка за 1, 5 и 15 минут;
  • Uptime — время работы системы.

Ниже — таблица процессов. Самые полезные столбцы:

СтолбецЧто показывает
PIDИдентификатор процесса
USERВладелец процесса
PRI, NIПриоритет и значение nice
VIRTВиртуальная память — всё адресное пространство, включая неиспользуемое. Обычно ни о чём не говорит
RESРезидентная память — сколько процесс реально занимает в RAM
SHRРазделяемая часть RES (библиотеки, общая память)
SСостояние: R — работает, S — спит, D — ждёт ввода-вывода, Z — зомби, T — остановлен
CPU%, MEM%Доля процессора и памяти
TIME+Суммарное процессорное время
CommandКомандная строка процесса

CPU% считается от одного ядра. Процесс, который загрузил четыре ядра, покажет около 400%. Это нормально, а не ошибка.

Основные клавиши

КлавишаДействие
F1 или hСправка по всем клавишам
F2 или SНастройка: счётчики, столбцы, цвета, отображение
F3 или /Поиск по имени (курсор переходит к совпадению)
F4 или \Фильтр: в списке остаются только совпадения
F5 или tДерево процессов
F6, < или >Выбор столбца для сортировки
F7, F8Уменьшить и увеличить nice (повысить или понизить приоритет)
F9 или kОтправить сигнал выбранному процессу
F10 или qВыход
ПробелОтметить процесс (для действий над несколькими сразу)
UСнять все отметки
uПоказать процессы одного пользователя
P, M, TСортировать по CPU, памяти, времени
IОбратный порядок сортировки
HСкрыть или показать пользовательские потоки
KСкрыть или показать потоки ядра
pПоказывать полный путь к программе или только имя
lОткрытые файлы процесса (нужен lsof)
sТрассировка системных вызовов (нужен strace, только Linux)
ZПауза обновления — удобно, чтобы рассмотреть быстро меняющийся список

Клавиши F1–F10 в некоторых терминалах перехвачены (например, F10 открывает меню в GNOME Terminal). Тогда пользуйтесь буквенными аналогами из таблицы.

Фильтры и поиск

F3 (поиск) переводит курсор на первый процесс, в имени которого есть строка. Следующее совпадение — снова F3. F4 (фильтр) скрывает всё, что не совпадает, и фильтр действует, пока вы его не очистите (F4, затем Esc или пустая строка). Пример: нажмите \, введите php-fpm — останутся только процессы PHP-FPM.

Фильтр можно задать сразу при запуске, вместе с другими параметрами:

htop -u www-data          # процессы одного пользователя
htop -p 1234,5678         # только указанные PID
htop -F nginx             # фильтр по имени (htop 3.x)
htop -t                   # сразу в режиме дерева
htop -s PERCENT_MEM       # сортировка по памяти
htop -d 20                # обновление раз в 2 секунды (в десятых долях)

Список допустимых имён столбцов для -s выводит htop --sort-key=help.

Дерево процессов

Клавиша F5 (или t) включает дерево: дочерние процессы показаны под родителем со сдвигом. Это быстрый способ понять, какой мастер-процесс породил сотню воркеров. Например, сразу видно, что все процессы php-fpm: pool www — потомки одного php-fpm: master process. В режиме дерева клавиши + и - разворачивают и сворачивают ветку, * — все ветки сразу.

Удобный приём: в дереве выделите родителя, нажмите c — отметятся он и все потомки. После этого F9 отправит сигнал всей группе. Делайте так только с пониманием последствий: на рабочем сервере корректнее перезапустить службу через systemctl restart.

Сортировка и сигналы

Чтобы найти главного потребителя ресурса, достаточно сортировки. P — по CPU, M — по памяти (столбец RES), T — по суммарному времени. Через F6 доступна сортировка по любому столбцу, в том числе по чтению и записи на диск, если добавить столбцы IO в F2 → Columns.

F9 открывает список сигналов. Порядок действий при зависшем процессе:

  1. SIGTERM (15) — вежливая просьба завершиться. Процесс успевает закрыть файлы и соединения.
  2. Если через несколько секунд процесс жив — SIGKILL (9). Он завершается немедленно, но несохранённые данные теряются.

Процессы в состоянии D (ожидание ввода-вывода) не реагируют даже на SIGKILL, пока не завершится операция с диском или сетевой ФС. Много процессов в D и высокий load average при низкой загрузке CPU — признак проблем с диском или NFS. Тогда стоит посмотреть статью о проверке и восстановлении дисков в Linux.

Настройки и где они хранятся

Всё, что вы меняете через F2 (столбцы, счётчики, цвета), htop сохраняет при выходе в файл ~/.config/htop/htoprc. Файл у каждого пользователя свой: настройки root и обычного пользователя разные. Полезные изменения в F2:

  • Display options → «Detailed CPU time» — разделение загрузки CPU на user, system, iowait, steal. На виртуальных машинах steal показывает, сколько времени процессор забирает соседний гость;
  • Columns → добавить IO_READ_RATE и IO_WRITE_RATE — видно, кто нагружает диск;
  • Meters → добавить Disk IO и Network IO в верхнюю панель.

btop: графики и всё на одном экране

btop (полное имя btop++) — продолжение проектов bashtop и bpytop, написанное на C++. Он показывает четыре панели: процессор с историей загрузки и температурой, память и диски, сеть с графиком трафика, процессы. Работает на Linux, FreeBSD, OpenBSD, NetBSD и macOS.

Установка btop

# Debian 12/13, Ubuntu 24.04
apt install btop

# AlmaLinux / Rocky Linux 9 и 10 (нужен EPEL)
dnf install epel-release
dnf install btop

# FreeBSD
pkg install btop

Клавиши btop

КлавишаДействие
Esc или mГлавное меню
oНастройки
h или F1Справка
1, 2, 3, 4Показать или скрыть панели CPU, памяти, сети, процессов
f или /Фильтр процессов
eДерево процессов
← →Сменить столбец сортировки
rОбратная сортировка
EnterПодробности о выбранном процессе
t, k, sОтправить SIGTERM, SIGKILL или выбрать сигнал
qВыход

Настройки хранятся в ~/.config/btop/btop.conf, файл создаётся при первом запуске. На слабом терминале или по медленному SSH пригодятся параметры --low-color (256 цветов вместо true color) и --tty (16 цветов, без графических символов).

top, htop или btop

tophtopbtop
Есть из коробкиДа, везде (procps или базовая система)Нет, но в стандартных репозиторияхНет, но в стандартных репозиториях и EPEL
Прокрутка и мышьНетДаДа
Дерево процессовОграниченно (V в procps-ng)ДаДа
Фильтр и поискФильтр через oДа, удобныйДа
Сигналы и niceПо PID вручнуюВыбором в спискеВыбором в списке
Графики CPU, сети, дисковНетТолько текущие полоскиДа, с историей
Пакетный режим для скриптовДа (top -b -n 1)НетНет
Нагрузка на системуМинимальнаяНизкаяЧуть выше из-за графики

На практике: top — когда больше ничего нет или нужен вывод в скрипт, htop — для ежедневной работы по SSH, btop — чтобы одним взглядом оценить сервер целиком, включая сеть и диски.

Типичные проблемы

СимптомПричинаРешение
AlmaLinux: No match for argument: htopНе подключён EPELdnf install epel-release, затем снова dnf install htop
FreeBSD: «htop requires linprocfs to be mounted»Очень старая версия портаОбновить дерево портов или поставить пакет: pkg install htop
Вместо рамок и полосок — «кракозябры»Локаль не UTF-8 или терминал без поддержкиПроверить locale, выставить UTF-8; для btop — --tty
F10 не закрывает htopКлавишу перехватывает эмулятор терминалаВыход по q
Память «вся занята», хотя сервер не тормозитКеш файловой системыСмотреть RES процессов и столбец available в free -h
htop не показывает процессы других пользователейВключён hidepid для /procЗапуск от root или через sudo htop

Частые вопросы

Чем htop лучше top?

Список прокручивается по вертикали и горизонтали, так что видны полные командные строки. Есть мышь, дерево процессов, удобные фильтры и поиск. Сигналы и nice задаются выбором процесса в списке, а не вводом PID. Сам top при этом никуда не делся и остаётся единственным вариантом для пакетного вывода в скрипт.

Безопасно ли ставить htop на рабочий сервер?

Да. Это обычная утилита из стандартного репозитория, она не запускает служб и не открывает портов. Нагрузка от неё минимальна. Единственное: под root htop может завершить любой процесс, поэтому сигналы отправляйте внимательно.

Почему CPU% у процесса больше 100?

Процент считается от одного ядра. Процесс, занявший четыре ядра полностью, покажет около 400%. Чтобы оценить загрузку машины целиком, смотрите на полоски ядер в верхней части экрана и на load average.

Нужен ли linprocfs для htop на FreeBSD?

Нет. С версии 2.0 htop поддерживает FreeBSD нативно и работает без Linux-эмуляции. Старое требование linprocfs касалось версий 0.x и 1.x, которые читали данные через Linux-совместимую /proc.

Можно ли поставить btop на сервер без графики?

Да, btop — терминальная программа, X или Wayland ей не нужны. Для корректного отображения нужен терминал с UTF-8. Если подключаетесь через старый клиент без поддержки Unicode, запустите btop --tty.

Как вернуть настройки htop по умолчанию?

Закройте htop и удалите файл ~/.config/htop/htoprc. При следующем запуске htop создаст его заново с исходными настройками.