btop и bottom решают одну задачу: показать в терминале, что происходит с процессором, памятью, дисками и сетью, не открывая громоздкую графику. Первый написан на C++ и известен яркими графиками, второй — на Rust, с конфигурацией в TOML и аккуратным деревом процессов. Оба ставятся из репозиториев, оба работают по SSH и оба не являются системой мониторинга: они показывают состояние «здесь и сейчас», но не хранят историю. Ниже — установка, настройка и практические сценарии, в которых каждый из них удобнее.
Что общего и в чём разница
Оба инструмента читают /proc и /sys, не требуют агента и запускаются от обычного пользователя. Различия начинаются в деталях:
- btop рисует графики CPU, памяти, сети и дисков на одном экране, поддерживает темы и мышь, умеет показывать GPU NVIDIA при установленном драйвере.
- bottom делает ставку на настраиваемую раскладку виджетов, дерево процессов и минимальное потребление ресурсов; GPU он не показывает.
- btop хранит настройки в btop.conf, bottom — в bottom.toml; у bottom раскладка описывается декларативно, что удобно для одинаковых настроек на нескольких машинах.
Установка
sudo apt install btop bottom
sudo dnf install btop bottom
sudo pacman -S btop bottom
В актуальных Debian и Ubuntu пакет bottom есть в репозиториях; в старых выпусках проще взять бинарник с GitHub или собрать через cargo. После установки проверьте версии и запуск:
btop --version
btm --version
btop --utf-force
Флаг —utf-force нужен, если локаль настроена неверно и вместо рамок появляются вопросительные знаки. Проверьте её командой locale.
btop: клавиши и режимы
Запуск без аргументов открывает экран по умолчанию. Клавиша m открывает меню настроек, h — справку, q — выход. Цифры 1–4 переключают готовые профили, стрелки двигают курсор по списку процессов, Enter показывает подробности, f включает фильтр, t переключает дерево, плюс и минус меняют интервал обновления. Мышь работает, но по SSH мешает: выделение текста перестаёт копировать.
btop -p 2 -u 1000
btop --debug
Ключ -p выбирает профиль, -u задаёт период обновления в миллисекундах. Слишком малый интервал на слабом сервере сам создаёт нагрузку: 1000–2000 мс обычно достаточно. Флаг —debug пишет служебную информацию в файл и помогает, когда интерфейс падает на нестандартном терминале.
Настройка btop.conf
Файл лежит в ~/.config/btop/btop.conf и создаётся при первом запуске. Меню m меняет те же параметры, но для переноса настроек на другой сервер удобнее править текст:
# ~/.config/btop/btop.conf
update_ms = 1500
proc_sorting = "cpu lazy"
shown_boxes = "cpu mem net proc"
graph_symbol = "braille"
truecolor = True
vim_keys = True
rounded_corners = True
mem_graphs = True
show_swap = True
Параметр proc_sorting задаёт сортировку по умолчанию, show_swap включает строку подкачки, vim_keys включает hjkl. Если терминал не поддерживает 24-битный цвет, truecolor лучше выключить: иначе некоторые темы выглядят грязно.
bottom: запуск и раскладка
Исполняемый файл называется btm. Минимальный режим без графиков полезен на удалённом сервере и при записи терминальных сессий:
btm --basic
btm -r 1000
btm --battery --mem --net
btm -c ~/.config/bottom/bottom.toml
Ключ -r задаёт интервал в миллисекундах, —basic отключает декоративные графики, —battery добавляет виджет батареи (на сервере он бесполезен, на ноутбуке — нет). По умолчанию btm показывает CPU, память, сеть, диски, температуру и процессы; лишние виджеты убираются в конфиге.
Конфигурация bottom.toml
Раскладка описывается строками и вложенными виджетами. Пример ниже даёт два ряда: сверху CPU и память, снизу сеть и дерево процессов.
# ~/.config/bottom/bottom.toml
[flags]
rate = 1500
default_widget_type = "proc"
default_widget_count = 1
enable_cache_memory = true
dot_marker = false
[colors]
cpu_core_colors = ["cyan", "green", "yellow", "magenta"]
[[row]]
ratio = 1
[[row.child]]
type = "cpu"
[[row.child]]
type = "mem"
[[row]]
ratio = 2
[[row.child]]
type = "net"
[[row.child]]
type = "proc"
default = true
После правки конфиг перечитывается при следующем запуске. Если виджет не появился, проверьте имя типа: ошибка в строке type приводит к молчаливому пропуску блока, а не к падению.
Что смотреть при реальных проблемах
Красивые графики бесполезны без интерпретации. Первым делом сравните load average с числом ядер: значение 4.0 на четырёхъядерной машине означает полную загрузку, а не катастрофу. Затем посмотрите на available, а не на free: Linux почти всегда держит память под кэш.
nproc
uptime
free -h
cat /proc/pressure/cpu
cat /proc/pressure/io
Файлы pressure показывают, сколько времени задачи ждали процессор или диск. Если растёт some в /proc/pressure/io, узкое место — накопитель, даже когда график CPU спокоен. В btop это видно по высокой нагрузке iowait, в bottom — по активности дисков и списку процессов в состоянии D.
Для сети полезно сопоставить график с реальными сокетами:
ss -s
ss -tunap | head -20
ip -s link show
Удалённый сервер, tmux и ограничения
Оба инструмента нормально работают по SSH, но постоянная перерисовка графика съедает трафик. На канале с задержкой включите —basic у bottom или увеличьте update_ms у btop. Для корректных цветов проверьте значение TERM=xterm-256color. Долгие наблюдения удобно держать в tmux: сессия переживёт обрыв соединения, а монитор продолжит работать.
tmux new -s monitor
btm --basic
# отсоединение: Ctrl+b, затем d
tmux attach -t monitor
Ограничения стоит знать заранее. btop показывает GPU только при поддержке со стороны драйвера, а на виртуальных машинах часть датчиков отсутствует. bottom не умеет GPU и не хранит историю. Ни один из них не заменяет Netdata, Zabbix или Prometheus с Grafana, если нужны алерты и ретроспектива. И ещё: данные о процессах в контейнерах ограничены пространством имён — запущенный на хосте монитор покажет контейнерные процессы, но не раскроет их внутреннюю статистику.
Проверить, не врёт ли монитор, можно сравнением с ядром:
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head
cat /proc/loadavg
grep -E 'MemTotal|MemAvailable|SwapFree' /proc/meminfo
Итог
Выбирайте btop, если нужен наглядный обзор и вы часто работаете за локальной консолью: темы, графики и мышь делают его приятнее. Выбирайте bottom, если важны предсказуемая раскладка, низкое потребление и единый конфиг на десятке машин, а также если вы работаете только по SSH. На практике они не конфликтуют: держите оба, btop — для быстрой диагностики, bottom — для постоянного окна в tmux. Главное — не путать монитор с системой мониторинга и проверять его показания через /proc, ps и ss.