Команда top в Linux. Полное руководство
Введене
Команда top (table of processes) — это консольная команда, которая выводит в терминал информацию обо всех работающих в системе процессов. Один из основных инструментов Linux администратора. В статье рассмотрим основные показатели, назначения колонок и раличные команды для работы с программой, в том числе интерактивные.
Установка
Обычно программа top идёт предустановленной, но бывает что нет. Чтобы её установить используйте следующую команду:
sudo apt install top
Описание интерфейса программы top
Для запуска кооманды просто выполните:
top
Окно программы top делится на две части:
Верхняя часть: информация о системе, использование ресурсов CPU, MEM, SWAP.
Нижняя часть: список запущенных процессов и информацией о них. Стандартно отсортирован по нагрузке на процессор.
Описание информации о системе
Разберём все показатели данных о системе, что предоставляет нам команда top.
Первая строка top
top - 11:59:32 up 50 min, 0 users, load average: 0.0
Тут всё довольно просто: текущее время, uptime, количество активных пользователей, load average
Хотелось бы немного остановиться на показателе такой метрики как load average. load average - это показатель средней нагрузки на Linux (на систему в целом, а не только CPU или Mem), некий средий показатель кол-ва исполняемых и ожидающих потоков. Значение 0.0 показывает нам, что система сейчас находится в состоянии простоя или нагрузка минимальная.
Tasks
Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie
Это информация о запущенных процессах. Тут есть очень интересные показатели, сейчас разберем их ниже.
- total — общее кол-во всех процессов.
- running — общее кол-во выполняемых процессов в системе на данный момент.
- sleeping — соответствено это спящие процессы, которые находятся в ожидании. Например: ввода/вывода.
- stopped — это остановленные процессы, в основном сюда попадают процессы, которые были остановлены пользователем. (сигнал SIGSTOP)
- zombie 🧟 — это процесс, который завершился и фактически он не выполняется, но его запись в таблице процессов всё ещё существует. А ещё его нельзя убить из SIGKILL. Обычно в зомби отлетают дочерние процессы, созданные при помощи fork или clone (создание нового процесса — копия родительского). Но мы же с вами знаем, что для того чтобы убить зомби нужно зарядить ему прямо в голову и для процесса это будет инициация завершения процесса от родителького процесса: kill -s SIGCHLD PID. Если это не поможет, то можно убить родительский процес - это завершит все дочерние.
%Cpu(s)
%Cpu(s): 5.2 us, 5.9 sy, 0.0 ni, 88.7 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st
Это информация о запущенных процессах. Тут есть очень интересные показатели, сейчас разберем их ниже.
- us / (User CPU time) — время, затраченное на работу программ пользователей (не учитывая ядра).
- sy / (System CPU time) — а это уже время, затраченное на работу ядра системы.
- ni / (Nice CPU time) — время, затраченное на работу программ с измененным приоритетом.
- id / (Idle) — время, проведённое в ожидании. Когда процессор простаивает в ожидании программ.
- wa / (Input output wait) — время, затраченное на ожидание чтения или записи на диск. Хотя в это время система может свои ресурсы направить на выполнение других процессов, но конкретно для определенного процесса он может простаивать.
- hi / (Hardware interrupts) — Это аппаратные прерывания. Время, затраченное на обработку hardware-прерываний. Например когда железо отправляет процессору информацию о каком-то событии (сигнал).
- si / (Software interrupts) — Это программные прерывания. Аналогично hi
- st / (Steal Time) — украденное время 😂. Этот параметр больше под виртуальные машины. Паример если у вас на одном гипервизоре зпущены две виртуальные машины и вдруг одной из них понадобилось больше ресурсов чем обычно, то она будет воровать процессорное время у второй машины. параметр в этом случе будет расти.
Ниже ещё буду описывать раличные интерактивные команды, в том числе и по CPU. Например 1 отобразит нам всю информацию по всем ядрам/потокам.
MiB Mem и MiB Swap
MiB Mem : 16183.3 total, 3356.7 free, 12602.7 used, 224.0 buff/cache MiB Swap: 49152.0 total, 46819.9 free, 2332.1 used. 3018.0 avail Mem
Вот и добрались до оперативной памяти, тут же информация о виртуальной памяти, которая используется для временного хранения данных на диске, если опреативная память переполнена. Можно менять отображения Гб, Мб, KiB через кнопку E.
- total — общее кол-во оперативной памяти.
- free — сколько оперативной памяти свободно. Но не совсем 🙃
- used — кол-во используемой оперативной памяти.
- buff/cache — кол-во памяти, используемой для кэша. Даже если там используется большой объем памяти - это тоже хорошо.
- avail Mem — Вот тут по сути отражена свободная память. Это та память которую мы по новые процессы можем прямо сейчас забрать.
Информация по процессам в top
Нижняя часть экрана программы top отображает список запущенных процессов и выводит дополнительную информацией о них.
- PID — это ID процесса.
- USER — имя пользователя, каторый иницировал запуск процесса.
- PR — приоритет процесса. (0-20) где 0 - это наивысший приоритет. Можно увидеть что вместо цифр там rt. Это real time, уникальность этого процесса что он будет выполняться моментально. Обычно такие процессы
- NI / niceness — вежливость процесса 😜. Это параметр, который отражает информацию о том насколько был именён PR от изночального значения.
- VIRT — виртуальная память. Для каждого процесса создаётся адресное пространство
- RES — количество физической памяти (использованной, а не выделенной), которую использует процесс.
- SHR / shared — потенциально сколько виртуальной памяти может быть разделено с другими процессами.
-
S — состояние процесса:
- R / running — выполняется.
- P / parked — припаркован (неактивен, но готов к работе, обычно связано с энергосбережением).
- I / Idle — бездействующий поток ядра.
- S / sleeping — спящий.
- D / uninterruptible sleep — ожидает дискового ввода/вывода, и не принимает никакие сигналы.
- T / stopped by job control signal — остановлен специальным сигналом.
- t / stopped by debugger during trace — остановлен в процессе дебага.
- Z / zombie — зомби.
- %CPU — использование CPU в процентах от общего объема мощьности CPU.
- %MEM — показывает это же значение что и RES, но в процентах от всей оперативной памяти.
- TIME+ — сколько времени этот процесс работал на ЦПУ, с точностью до сотых долей секунды.
- COMMAND — команда, с помощью которой запустили данный процесс.
Это общая информация по тем столбцам, что отображаются в стандартной настройке, но при желании можно добавить иные параметры нажав F
Как выбрать/настроить нужные поля в top
Итак, для выбора столбцов в программе top прожимаем кнопку F и:
- d или пробел — добавить выбранное поле.
- s — выбрать поле для сортировки.
- q — вернуться в режим просмотра.
Команды управления и фильтрация программой top
Для работы с утилитой top используются следующие горячие клавиши.
Общая информация
- Пробел — обновить вывод
- q или Esc — выход из top
- h — вывод справки по утилите
- d или s — изменить интервал обновления информации 5 - 15 минут
- z — подсветить работающие процессы
- Z — изменить цветовую схему
- W — текущие настройки программы в конфигурационный файл ( ~/.toprc).
- S — показывать процессы системы. Обычно, системные процессы такие как: pager или swapper не показываются. Эта опция сделает их видимыми
- H — выводить потоки процессов
- Y — посмотреть дополнительные сведения о процессе, открытые файлы, порты, логи и т д;
- l — скрыть или вывести информацию о средней нагрузке на систему (первую строку с аптаймом в top)
- V — отображение процессов в виде дерева
- c — вывести полный путь запущенного процесса (столбец COMMAND)
- 1 — отобразить всю статистику по всем ядрам
Фильтрация и работа с процессами:
- M — сортировка по используемой памяти
- P — сортировка по нагрузке на процессор (используется по умолчанию)
- T — сортировка по времени работы процесса
- A — сортировка по максимальному потреблению различных ресурсов
- u — сортировка по имени пользователя (потребуется ввести имя пользователя)
- i — переключение режима отображения процессов, которые сейчас не используют ресурсы процессора
- n — максимальное количество процессов, для отображения в программе
- L — поиск по слову
- o — фильтрация процессов по произвольному условию, по которому надо выполнять сортировку
- <> — перемещение поля сортировки вправо и влево
- k — послать сигнал завершения процессу по номеру его PID
- r — Изменить приоритет процесса
Однако у команды top в linux есть и опции для запуска. Например:
top -H
Небольшой список опций для top:
- -v — вывести версию программы
- -b — режим только для вывода данных, программа не воспринимает интерактивных команд и выполняется пока не будет завершена вручную
- -c — отображать полный путь к исполняемым файлам команд
- -H — включает вывод потоков процессов
- -i — не отображать процессы, которые не используют ресурсы процессора
- -O — вывести все доступные поля для сортировки
- -p — отслеживать только указанные по PID процессы, можно указать несколько PID
- -u — выводить только процессы, запущенные от имени указанного пользователя
И в заключение
В этой статье мы разобрали, как работает команда top в Linux. Несмотря на кажущуюся простоту при первом запуске, эта утилита обладает широкими возможностями, а после настройки может выглядеть очень эффектно.