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 открывает список сигналов. Порядок действий при зависшем процессе:
- SIGTERM (15) — вежливая просьба завершиться. Процесс успевает закрыть файлы и соединения.
- Если через несколько секунд процесс жив — 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
| top | htop | btop | |
|---|---|---|---|
| Есть из коробки | Да, везде (procps или базовая система) | Нет, но в стандартных репозиториях | Нет, но в стандартных репозиториях и EPEL |
| Прокрутка и мышь | Нет | Да | Да |
| Дерево процессов | Ограниченно (V в procps-ng) | Да | Да |
| Фильтр и поиск | Фильтр через o | Да, удобный | Да |
| Сигналы и nice | По PID вручную | Выбором в списке | Выбором в списке |
| Графики CPU, сети, дисков | Нет | Только текущие полоски | Да, с историей |
| Пакетный режим для скриптов | Да (top -b -n 1) | Нет | Нет |
| Нагрузка на систему | Минимальная | Низкая | Чуть выше из-за графики |
На практике: top — когда больше ничего нет или нужен вывод в скрипт, htop — для ежедневной работы по SSH, btop — чтобы одним взглядом оценить сервер целиком, включая сеть и диски.
Типичные проблемы
| Симптом | Причина | Решение |
|---|---|---|
AlmaLinux: No match for argument: htop | Не подключён EPEL | dnf 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 создаст его заново с исходными настройками.