- Информация о процессах в Linux. Команда Top
- Синтаксис
- Выводимые данные
- Остановка процесса
- Изменение приоритета процесса
- Изменение интервала обновления
- Вывод процессов заданного пользователя
- Отображение абсолютных путей команд
- Сортировка вывода
- Цветовое выделение запущенных процессов
- Выход после заданного числа обновлений
- Сохранение результатов в файл
- Заключение
- Sysadminium
- Утилита top – наблюдаем за процессами
- Утилита top
- Общая информация о системе
- Информация по каждому процессу
- Опции команды top
- Количество итераций
- Процессы определённого пользователя
- Горячие клавиши top
- Режим цветности
- Больше информации о команде (поле COMMAND)
- Сортировка процессов
- Завершение процессов
- Добавление полей
Информация о процессах в Linux. Команда Top
При работе в интерфейсе командной строки Linux часто требуется информация о процессах, например, какая программа потребляет больше всего ресурсов процессора или памяти. Для этого есть специальная команда — top. В данном руководстве мы разберем, как она работает, на нескольких простых и понятных примерах..
Синтаксис
Команда top выводит краткие данные о системе и список процессов, обрабатываемых ядром Linux, а также связанную с ними полезную информацию. Ее синтаксис следующий:
Информация динамически обновляется в реальном времени. Конкретные отображаемые данные для информации о системе и процессах пользователь может настроить сам и сохранить для последующих запусков. Команда предоставляет интерактивный интерфейс для работы с процессами и индивидуальной настройки.
Использование top
Пользоваться top очень легко. Достаточно просто выполнить команду top без опций:
Результат был следующим:
Стоит заметить, что на скриншоте мы видим фиксированный в конкретный момент времени образ результата, который динамически изменяется через заданный интервал.
Выводимые данные
Начнем с первой строки. В ней содержатся (именно в этом порядке) записи о текущем времени, времени работы системы с последнего запуска, активных сеансах пользователей и средней загрузке системы (за последнюю минуту, пять минут и пятнадцать минут, соответственно).
Вторая строка содержит информацию об общем количестве процессов, количестве запущенных, спящих, остановленных и «зомби»-процессов.
В третьей строке содержится информация об использовании времени центрального процессора (в процентах). Вот что означают указанные в ней значения:
us, user : время работы с пользовательскими процессами без явного приоритета планирования (приоритет по умолчанию не менялся при помощи команды nice)
sy, system : время работы с процессами ядра (системными)
ni, nice : время работы с пользовательскими процессами, приоритет которых был назначен при помощи nice
id, idle : время, затраченное обработчиком простоя ядра
wa, IO-wait : время ожидания завершения ввода/вывода
hi : время обработки аппаратных прерываний
si : время обработки программных прерываний
st : время, использованное гипервизором, ожидание виртуальной машиной ответа физического процессора.
Две последующие строки показывают информацию об использовании оперативной памяти и свопа. Далее, наконец, выводится информация о процессах (в указанном порядке): идентификатор
PID- идентификатор
USER— владелец
PR-приоритет
NI-значение nice,
VIRT-объем используемой виртуальной памяти
RES-объем используемой физической памяти
SHR-объем используемой разделяемойпамяти
S-статус процесса (S — спящий, R — запущенный, Z — «зомби»),
%CPU— использование процессора
%MEM-использование ОЗУ
TIME-время активности
COMMAND-инициировавшая процесс команда.
Остановка процесса
Выполнить это действие довольно просто — нажмите “k”, и программа запросит идентификатор процесса, который вам нужно остановить. Прямо над таблицей с информацией о процессах вы увидите сообщение следующего вида:
Таким образом, вы можете ввести идентификатор программы, либо по умолчанию top попытается остановить первый процесс в списке, отправив сигнал SIGTERM. После отправки сигнала появится сообщение вида:
Здесь мы остановили программу с PID 109
Изменение приоритета процесса
Если вам требуется изменить приоритет программы, нажмите ‘r’. Вы увидите вот такое сообщение:
Аналогично предыдущему примеру, можно ввести PID или по умолчанию изменить приоритет первого процесса в списке. Программа запросит новое значение приоритета (nice):
Введите значение и нажмите Enter. Значение приоритета заданного процесса будет изменено.
Изменение интервала обновления
По умолчанию результат top обновляется каждые 3 секунды, но этот интервал можно изменить, нажав ‘d’. Команда запросит новое значение:
Введите его и нажмите Enter.
Вывод процессов заданного пользователя
Команда top по умолчанию отображает все процессы, но вы можете ограничить выводимые результаты процессами конкретного пользователя. Для этого нужно нажать ‘u’. Вы увидите сообщение следующего вида:
Введите имя интересующего пользователя, нажмите Enter, и вы увидите только те процессы, владельцем которых является данный пользователь.
Например, если ввести ‘root’, результат будет иметь следующий вид:
Также можно воспользоваться опцией командной строки -u и указать нужного пользователя сразу при запуске команды:
Отображение абсолютных путей команд
Чтобы полностью увидеть команды, которые были инициаторами процессов, со всеми опциями командной строки и аргументами, нужно нажать ‘c’:
Вы увидите абсолютные пути команд, а также все опции и аргументы.
Сортировка вывода
Для сортировки отображения во время работы команды top введите одно из значений
- [M] Сортировать по объёму используемой памяти.
- [P] Отсортировать по загрузке процессора.
- [u] Сортировать по имени пользователя.
Например сортировка по использованию объема памяти выглядит так
Цветовое выделение запущенных процессов
Чтобы выделить запущенные процессы другим цветом, нажмите клавишу ‘z’. Это поможет вам легче выявлять такие процессы.
Выход после заданного числа обновлений
По умолчанию top обновляет выводимые данные до нажатия ‘q’ (выход из программы). Опция -n при запуске позволяет указать необходимое количество обновлений, после которых выход произойдет автоматически. Например, следующая команда выполнит 10 обновлений:
Сохранение результатов в файл
Для сохранения выводимых командой top результатов в файл выполните следующую команду. Опция -b активирует “пакетный” режим: top не будет принимать входных команд, выполнив заданное опцией -n количество обновлений.
Получение помощи и выход из программы
Для получения помощи о команде top нажмите ‘h‘:
Чтобы выйти из программы, как уже упоминалось, нажмите ‘q’.
Заключение
Команда top — инструмент с очень широким функционалом, но полное его рассмотрение выходит за рамки данного руководства. Освоив разобранные в данной статье базовые функции, вы можете обратиться к man-странице команды для расширения своих знаний.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Sysadminium
База знаний системного администратора
Утилита top – наблюдаем за процессами
В этой статье будет показана утилита top, с помощью которой можно наблюдать за активностью процессов в реальном времени.
Утилита top
Утилита top — это консольный диспетчер задач. Он показывает общую информацию о системе и информацию о каждом процессе. Работа этой утилиты выглядит следующим образом:
Работа утилиты top
Вы можете почитать официальный мануал по использованию top здесь, или выполните команду man top .
Это не привычная нам утилита командной строки. Это – интерактивная утилита, то есть она постоянно обновляет данные и с ней можно взаимодействовать с помощью горячих клавиш.
Вывод данной утилиты можно разбить на две части:
- сверху – шапка. Здесь вы можете посмотреть на общую информацию о системе;
- ниже – информация по каждому процессу.
Общая информация о системе
Как видно, шапка состоит из пяти строк.
На первой и второй строке показана общая информация о системе:
Утилита top – общая информация о системе
На первой строке показаны следующие поля:
- текущее время;
- как долго работает система после последней загрузки;
- сколько в системе активных пользователей;
- средняя загрузка системы (load average) — три величины, усредненные за последние 1 и 5 и 15 минут. Чем ниже, тем лучше. Если превышает количество ядер на сервере, то значит сервер перегружен.
- количество процессов;
- количество работающих в данный момент процессов;
- количество спящих процессов;
- количество остановленных процессов;
- количество зомби процессов.
На третьей строке показана информация о потреблении ЦПУ:
Утилита top – информация о потреблении ЦПУ
- us — потребление cpu пользовательскими процессами (top и apache2);
- sy — потребление cpu системными процессами;
- ni — потребление cpu пользовательскими процессами, c измененным приоритетом (командой nice или renice);
- id — простаивание cpu;
- wa — процент времени, в течение которого процессор простаивал, ожидая завершения операции ввода-вывода. Если слишком высокое (более 10), значит за вашим процессором не поспевает диск, и нужно бы поменять его на более быстрый;
- hi — процент времени работы аппаратных прерываний. Периферийные устройства могут прерывать работу процессора, чтобы передать какие-то данные;
- si – процент времени работы программных прерываний. Некоторые приложения могут прерывать работу процессора, чтобы передать какие-то данные;
- st — процент времени, когда реальный процессор не был доступен виртуальной машине. Будет расти если виртуальной машине выделить больше ядер, чем имеет гипервизор. Этот показатель имеет значение только в системах виртуализации.
Ниже видим информацию по потреблению оперативной памяти (Mem) и подкачки (Swap):
Утилита top – информация о потреблении оперативной памяти
- total — общее количество памяти;
- free — количество свободной памяти;
- used — количество используемой памяти;
- buff / cache — память выделенная под буфер и дисковый кэш;
- avail Mem — память которая может быть выделена для запуска новых процессов.
Информация по каждому процессу
Ниже показана информация по каждому процессу. Информация разбита на следующие колонки:
top – информация по процессам
- PID — номер процесса;
- USER — имя пользователя под которым работает процесс;
- PR — приоритет процесса;
- NI — любезность процесса, чем она выше, тем ниже приоритет;
- VIR — общее количество памяти, которое способен адресовать процесс в данный момент времени. Включает в себя RES, SHR, прикреплённые файлы (например — файлы библиотек). Также включает в себя память, которая была выделена, но не использована;
- RES — количество физической памяти, которую использует процесс;
- SHR — количество разделяемой памяти, которую использует процесс. Разделяемая память потенциально может быть разделена с другими процессами;
- S — состояние процесса (я их уже описывал здесь):
- S (sleeping) – спящий;
- R (running) – в работе;
- Z (zombie) – зомби;
- D (uninterruptible sleep) – ожидает дискового ввода/вывода, и не принимает никакие сигналы;
- T (stopped by job control signal) – остановлен специальным сигналом;
- t (stopped by debugger during trace) – остановлен в процессе дебага;
- I (Idle) – бездействующий поток ядра.
- %CPU — использование cpu в процентах;
- %MEM — RES в процентах от общего количества памяти;
- TIME+ — сколько времени с этим процессом работал ЦПУ, с точностью до сотых долей секунды;
- COMMAND — с помощью какой команды запустили процесс.
Опции команды top
Теперь пробежимся по основным опциям, с которыми можно запускать top.
Количество итераций
Опция -n укажет через сколько повторений нужно завершить работу top. По умолчанию чтобы выйти из top нужно нажать клавишу q. Следующая команда выйдет из top через 10 повторений:
Процессы определённого пользователя
Можно заставить top отображать процессы определенного пользователя с помощью опции -u:
top – процессы пользователя www-data
Горячие клавиши top
Режим цветности
Если во время работы top нажать клавишу z, это переключит режим цветности (белое на чёрном или черное на белом):
top – изменение режима цветности
Больше информации о команде (поле COMMAND)
Если во время работы top нажать клавишу с, это заставит выводить больше информации о команде:
top – больше информации о команде процесса
Сортировка процессов
По умолчанию процессы отсортированы по колонке %CPU. Те что потребляют больше всего находятся сверху.
Чтобы выделить столбец, по которому сейчас идет сортировка, нажмите клавишу x.
top – сортировка по колонке USER
Клавишами “ >“, можно выбрать столбец, по которому нужно сортировать процессы.
А если нажать клавишу R, то сортировка пойдет в обратном порядке.
Клавиша M отсортирует процессы по потреблению памяти (%MEM).
Завершение процессов
Из top можно завершить процесс, для этого нужно нажать клавишу k, далее ввести pid процесса, который хотим завершить и нажать Enter.
По умолчанию процессу посылается сигнал 15 (sigterm). Но завершать чужие процессы можно только запустив top под пользователем root, или с помощью команды sudo.
Сигналы, которые можно посылать процессам, я разберу чуть позже в этом курсе.
Добавление полей
По умолчанию отображаются далеко не все поля. Чтобы добавить поля нажмите клавишу F. Затем, с помощью клавиш вверх и вниз, вы можете перемещаться по полям. Чтобы добавить выбранное поле нажмите клавишу d или пробел. А чтобы выбрать поле для сортировки выделите его и нажмите s. Ну и чтобы вернуться в режим просмотра, нажмите q.
top – добавление полей
Мы разобрали утилиту top для мониторинга за потреблением ресурсов Linux.
Узнали следующие опции top:
- -n — завершить top после нескольких итераций;
- -u — показывать процессы определенного пользователя.
Узнали горячие клавиши top:
- z – изменить цветность;
- c – более полная команда запуска;
- – сортировать по следующему столбцу;
- R – обратить сортировку;
- M – сортировать по rss;
- x – выделить колонку по которой ведётся сортировка;
- k – завершить процесс;
- F – настроить поля и сортировку.