Htop
Htop — компьютерная программа, предназначенная для отображения в терминале списка запущенных процессов и информации о них (монитор процессов). Создана как альтернатива программе top. Написана на языке C. Предоставляет пользователю текстовый интерфейс; для вывода информации в терминал использует библиотеку ncurses.
Общие сведения
| htop | |
|---|---|
| Тип | монитор процессов |
| Автор | Hisham H. Muhammad |
| Написана на | C (C99) |
| Интерфейс | ncurses |
| Операционные системы | GNU/Linux, FreeBSD, OpenBSD, macOS |
| Языки интерфейса | английский |
| Первый выпуск | 7 мая 2004[1] |
| Последняя версия | 3.2.2[2] (5 февраля 2023[3]) |
| Репозиторий | github.com/htop-dev/htop |
| Лицензия | GNU GPL v2[4] |
| Сайт | hisham.hm/htop/ |
История
Автор программы, Hisham Muhammad, назвал её «htop» по аналогии с тем, как названа программа «pinfo»[5], написанная программистом Przemek Borys. Слово «pinfo» означает «P rzmek’s info». Слово «htop» означает «Hisham’s top»[6].
Изначально программа получала сведения о процессах из виртуальной файловой системы procfs, реализованной ядром Linux, и могла работать только в ОС Linux.
Первое сообщение[7] с упоминанием ОС FreeBSD было опубликовано в списке рассылки 9 мая 2006 года и сообщало о выходе версии 0.6.1. 30 августа 2007 года[8][9] в коллекцию портов ОС FreeBSD была добавлена портированная версия 0.6.6 (выпущенная 1 июня 2007 года[10]). Для эмуляции procfs программа использовала библиотеку linprocfs. Появилась возможность портирования htop под любую ОС, поддерживающую слой эмуляции procfs.
Версия 0.8.2 (выпущена 2 июня 2009 года[11]) была портирована для работы в macOS. Портирование было выполнено путём замены кода, специфичного для Linux, на код, специфичный для macOS[12].
До версии 1.0.3 (выпущенной 24 апреля 2014 года[13]) программа официально поддерживала только Linux. Начиная с версии 2.0.0 (выпущенной 10 февраля 2016 года[3]) в исходный код htop был добавлен слой для абстрагирования от особенностей различных ОС. Усилиями сообщества htop удалось портировать для работы в FreeBSD, OpenBSD и Darwin (macOS).
Применение
htop часто используется в случаях, когда информация, получаемая от утилиты top, недостаточна, например, при поиске утечек памяти в процессах.
Также htop применяется как системный монитор[14].
Возможности
По умолчанию htop сортирует список процессов по времени, затраченному процессом на ЦПУ (клавиша P) («CPU%»). Также возможна сортировка по объему используемой процессом памяти (клавиша M) («MEM%»), по времени выполнения процесса в пространстве ядра и пользователя (клавиша T) («TIME+») и по любому отображаемому параметру процесса (клавиши < и >).
htop отображает:
- время, прошедшее с момента запуска ОС (uptime);
- загрузку системы (load average);
- объем памяти, размещенной в ОЗУ («Mem»);
- объем памяти, сохранённой в файл или на раздел подкачки («Swp»);
- загруженность всех процессоров («CPU») или каждого процессора/ядра по отдельности.
В отличие от утилиты top, htop:
- по умолчанию показывает список всех процессов, запущенных в ОС;
- позволяет осуществлять вертикальную и горизонтальную прокрутку списка процессов (клавиши стрелок);
- реализует диалог (клавиша S), позволяющий менять настройки без перезапуска программы, например, выбирать параметры процессов для отображения, менять цветовую схему;
- позволяет отправлять сигналы одному или нескольким выбранным процессам без ввода pid (клавиша k) (аналогично утилите kill);
- также без ввода pid позволяет:
- менять приоритет nice процесса для планировщика (клавиши [ и ]) (аналогично nice и renice);
- выбирать процессоры/ядра, на которых процесс может выполняться (клавиша a) (см. affinity mask) (аналогично taskset из пакета util-linux);
- менять приоритет операций ввода-вывода для планировщика ввода-вывода (клавиша i) (аналогично ionice);
- просматривать значения переменных окружения (клавиша e);
- поддерживает мышь.
Также htop:
- позволяет выбирать несколько процессов из списка:
- клавиша пробел — выделение одного процесса;
- клавиша c — выделение процесса и всех его дочерних процессов;
- клавиша U — отмена выделения;
- позволяет осуществлять поиск по pid (клавиши цифр) или по имени процесса (клавиши / и \);
- позволяет просматривать открытые процессом файлы (клавиша l) (аналог lsof);
- позволяет следить за системными вызовами процесса (клавиша s) (аналог strace);
- позволяет следить за вызовами процессом функций библиотек (клавиша s) (аналог ltrace);
- позволяет просматривать процессы, запущенные от имени одного пользователя (клавиша u);
- может отображать процессы в виде дерева (клавиша t) (аналог pstree);
- может показывать потоки пользовательских процессов (клавиша H) и потоки ядра (клавиша K);
- использует управляющие последовательности ANSI (CSI) для цветового выделения выходных данных.
- Значения цветов
| Цвет по умолчанию[15] | Время ЦПУ тратится на выполнение..[16]. | ||
|---|---|---|---|
| Синий | low | …потоков пространства пользователя, у которых приоритет nice больше 0 (низкие приоритеты) | |
| Зелёный | normal | …потоков пространства пользователя, у которых приоритет nice меньше или равен 0 (нормальный и высокие приоритеты) | |
| Красный | kernel | …потоков ядра ОС | |
| Жёлтый | irq | …обработчиков аппаратных прерываний | |
| Маджента | soft-irq | …обработчиков программных прерываний | |
| Сине-зелёный | steal и guest | …виртуальных машин | |
| Чёрный | io-wait | …ожидания завершения операций ввода-вывода | |
| Цвет по умолчанию[15] | Назначение[16][17] | |
|---|---|---|
| Зелёный | used[m 1] = physical[m 2] — kernel_binary[m 3] — reserved[m 4] — buffers[m 5] — cache[m 6] — free[m 7] | |
| Синий | buffers[m 5] | |
| Жёлтый | cache[m 6] | |
- ↑ used — размер страниц памяти, находящихся в ОЗУ.
- ↑ physical — размер памяти, доступной в ОЗУ.
- ↑ kernel_binary — размер памяти, занятой исполняемым кодом ядра.
- ↑ reserved — размер зарезервированной памяти.
- ↑ 1 2 buffers — размер памяти ядра, используемой для временного хранения raw-данных, прочитанных с диска или подлежащих записи на диск.
- ↑ 1 2 cache — память ядра, находящаяся в ОЗУ и используемая для хранения содержимого файлов, прочитанных с диска.
- ↑ free — размер свободной памяти; сумма свободной памяти по низким адресам (lowmem), используемой ядром, и свободной памяти по большим адресам (highmem), доступной пользовательским процессам.
Примечания
- ↑ https://hisham.hm/htop/releases/0.1/
- ↑ Hisham H. Muhammad. Скачать htop (англ.). Официальный сайт проекта. Дата обращения: 14 февраля 2016. Архивировано 10 августа 2015 года.
- ↑ 1 2 Index of /htop/releases. Дата обращения: 1 апреля 2017. Архивировано 4 мая 2017 года.
- ↑ Текст лицензии htop. GitHub.com. Дата обращения: 24 июня 2024. Архивировано 19 июня 2024 года.
- ↑ Сайт программы pinfo (англ.). Архивировано 2 мая 2015 года.
- ↑ Часто задаваемые вопросы о htop (англ.). Официальный сайт htop. Дата обращения: 4 августа 2015. Архивировано 26 марта 2015 года.
- ↑ [htop-general] Announce: htop 0.6.1 (англ.). SourceForge.net (9 мая 2006). Архивировано 26 января 2025 года.
- ↑ FreshPorts -- sysutils/htop (англ.). Архивировано 6 сентября 2015 года.
- ↑ Порт htop для FreeBSD (англ.). Архивировано 28 декабря 2010 года.
- ↑ [htop-general] Announce: htop 0.6.6 (англ.). SourceForge.net (1 июня 2007). Архивировано 25 января 2025 года.
- ↑ [htop-general] [ANN] htop 0.8.2 (англ.). SourceForge.net (2 июня 2009). Архивировано 25 января 2025 года.
- ↑ H. H. Muhammad. Going cross-platform - how htop was made portable (англ.). FOSDEM 2016 (ULB Solbosch campus, Brussels, Belgium; 30-31 Jan 2016) (31 января 2016). Архивировано 15 марта 2016 года.
- ↑ [htop] [ANN] htop 1.0.3 (англ.). FreeLists.org (24 апреля 2014). Архивировано 16 февраля 2016 года.
- ↑ System monitoring with htop (англ.). Rackspace (12 июня 2014). Дата обращения: 4 августа 2015. Архивировано 24 сентября 2015 года.
- ↑ 1 2 Файл CRT.c — исходный код htop на GitHub (англ.). Архивировано 15 февраля 2016 года.
- ↑ 1 2 doc/Documentation/filesystems/proc.txt — Описание файловой системы procfs (англ.). kernel.org. Архивировано 6 июля 2015 года.
- ↑ proc(5) — Linux manual page (англ.). man7.org. Архивировано 15 марта 2012 года.
Ссылки
- Репозиторий проекта на GitHub
- H. H. Muhammad. Going cross-platform - how htop was made portable (англ.). FOSDEM 2016 (ULB Solbosch campus, Brussels, Belgium; 30-31 Jan 2016) (31 января 2016). Архивировано 15 марта 2016 года. (слайды доклада Слайды доклада по htop на FOSDEM'2016 (англ.). Архивировано 21 февраля 2016 года.)