Команда top linux описание

Обновлено: 05.07.2024

В одной из предыдущих статей я рассказывал как пользоваться утилитой ps для просмотра информации о запущенных процессах в Linux. Однако для решения подобных задач существуют и более продвинутые инструменты. Один из таких инструментов - это команда top. Она немного проще чем та же утилита htop, но в отличие от ps позволяет выводить информацию о системе, а также список процессов динамически обновляя информацию о потребляемых ими ресурсах.

В этой статье мы разберемся как пользоваться утилитой top, рассмотрим опции её запуска, а также интерактивные команды, которые вы можете использовать во время работы программы. Кроме того, разберем несколько примеров.

Команда top в Linux

1. Опции и команды top

Опций запуска у команды не много и использовать их активно не принято, потому что большинство действий выполняются с помощью интерактивных команд. Вот основные опции:

  • -v - вывести версию программы;
  • -b - режим только для вывода данных, программа не воспринимает интерактивных команд и выполняется пока не будет завершена вручную;
  • -c - отображать полный путь к исполняемым файлам команд;
  • -d - интервал обновления информации;
  • -H - включает вывод потоков процессов;
  • -i - не отображать процессы, которые не используют ресурсы процессора;
  • -n - количество циклов обновления данных, после которых надо закрыть программу;
  • -o - поле, по которому надо выполнять сортировку;
  • -O - вывести все доступные поля для сортировки;
  • -p - отслеживать только указанные по PID процессы, можно указать несколько PID;
  • -u - выводить только процессы, запущенные от имени указанного пользователя.

С опциями запуска всё, теперь давайте поговорим про интерактивные команды, которые вы можете выполнять во время работы программы.

  • h - вывод справки по утилите;
  • q или Esc - выход из top;
  • A - выбор цветовой схемы;
  • d или s - изменить интервал обновления информации;
  • H - выводить потоки процессов;
  • k - послать сигнал завершения процессу;
  • W - записать текущие настройки программы в конфигурационный файл;
  • Y - посмотреть дополнительные сведения о процессе, открытые файлы, порты, логи и т д;
  • Z - изменить цветовую схему;
  • l - скрыть или вывести информацию о средней нагрузке на систему;
  • m - выключить или переключить режим отображения информации о памяти;
  • x - выделять жирным колонку, по которой выполняется сортировка;
  • y - выделять жирным процессы, которые выполняются в данный момент;
  • z - переключение между цветным и одноцветным режимами;
  • c - переключение режима вывода команды, доступен полный путь и только команда;
  • F - настройка полей с информацией о процессах;
  • o - фильтрация процессов по произвольному условию;
  • u - фильтрация процессов по имени пользователя;
  • V - отображение процессов в виде дерева;
  • i - переключение режима отображения процессов, которые сейчас не используют ресурсы процессора;
  • n - максимальное количество процессов, для отображения в программе;
  • L - поиск по слову;
  • <> - перемещение поля сортировки вправо и влево;

Это далеко не все команды top, но их будет вполне достаточно для начала работы, а остальные вы сможете найти в официальной документации по утилите.

2. Запуск программы

Утилита не всегда установлена по умолчанию, для её установки в Ubuntu используйте команду:

sudo apt install top

Затем для запуска просто выполните в терминале:

Окно можно условно разделить на две части. В верхней части находится информация о системе, общем использовании ресурсов процессора и памяти, раздела подкачки, и так далее. В нижней части окна расположен список запущенных процессов с информацией, отсортированных по определённому полю.


Если все процессы не помещаются на одном экране, их можно листать с помощью стрелок вверх и вниз. Если не помещаются все колонки - с помощью стрелок вправо и влево:


Если вы хотите отображать только те процессы, которые используют ресурсы процессора используйте команду i:


3. Сортировка процессов

Чтобы выделить поле, по которому сейчас выполняется сортировка нажмите клавишу y. После этого вся колонка будет выделена жирным:


Для выбора соседнего поля сортировки справа или слева от текущего используйте клавиши > или < соответственно. Например, для сортировки по памяти top достаточно переместить поле сортировки на столбец %MEM.

4. Настройка полей

По умолчанию выводятся далеко не все поля, а только те, что чаще всего используются. Но вы можете включить вывод других полей, отключить не нужные, а также изменить порядок их расположения. Для этого введите команду F:

Откроется новое окно в псевдоинтерфейсе программы, в котором будут выведены все поля. Я не буду описывать поля в этой статье, поскольку я это сделал в статье про команду ps:


Поля, которые сейчас отображаются выделены жирным и отмечены звездочкой. Вы можете перемещаться по ним с помощью стрелок вверх или вниз. Для того чтобы добавить или убрать поле нажмите на нём d или пробел.

Для того чтобы переместить поле, нажмите на нём Enter, а затем стрелку вправо. После этого поле будет захвачено и вы сможете двигать его вверх или вниз. Затем надо отпустить поле на нужном месте с помощью клавиши Enter.

После завершения настройки можно вернуться обратно в интерфейс программы с помощью клавиши q.

5. Виртуальные окна

Программа имеет четыре окна для вывода данных. Так они называются в документации, но мне больше нравится название формат отображения. Это def, job, mem и usr. Каждое окно выделяется другим цветом в цветном режиме, а также содержит разный набор колонок. Для просмотра всех окон используйте команду A, а для переключения между ними - a:


Текущее окно отображается в левом верхнем углу.


Когда выберите нужное окно снова нажмите A, чтобы вернуться в обычный режим.


7. Цветной вывод

По умолчанию команда top выводит всё в чёрно-белом цвете, однако вы можете включить цветной вывод. Для этого нажмите клавишу z:


Как я уже говорил, у каждого окна данных есть своя цветовая схема, вы можете настроить их под себя. Для этого надо использовать команду Z:


Здесь каждому элементу цветовой схемы отведена своя буква в верхнем регистре, а цвету - в нижнем. Сначала надо выбрать элемент, затем цвет для него. Когда завершите нажмите w для сохранения и редактирования цветовой схемы следующего окна или Enter для сохранения и выхода.

8. Сохранение настроек

Все эти настройки не имели бы смысла, если бы их нельзя было сохранить для восстановления при следующем запуске. Для сохранения текущих настроек программы используйте команду W.

Она записывает все внесённые настройки в файл

/.toprc и при следующем запуске они будут восстановлены.

9. Фильтрация процессов

Чтобы отфильтровать процессы, запущенные от имени определённого пользователя используйте команду u:

После ввода команды она попросит ввести имя пользователя или его UID. Также можно фильтровать процессы по любому другому полю. Для этого нажмите клавишу o, затем введите условие фильтра в виде:

ИМЯ_ПОЛЯ = значение

Если вы выполните команду o ещё раз, то программа предложит создать ещё один фильтр. Чтобы сбросить фильтры используйте команду =.

10. Завершение процессов

Чтобы завершить процесс используйте команду k. После ввода команды утилита попросит набрать PID идентификатор процесса, который надо завершить:

Можно оставить по умолчанию, тогда будет отправлен SIGTERM или же ввести любой другой код, например 9 для SIGKILL.

11. Инспектирование процессов

Ещё одна интересная возможность команды top - это инспектирование процессов. Для того чтобы эта функция заработала надо сначала открыть файл

/.toprc и добавить в конец такие строки:

pipe Open Files lsof -P -p %d 2>&1
file NUMA Info /proc/%d/numa_maps
pipe Log tail -n200 /var/log/syslog | sort -Mr

После этого перезапустите top и нажмите сочетание клавиш Shift+y.

Утилита попросит ввести PID процесса, который надо инспектировать. После этого откроется новое псевдоокно в котором можно выбрать три вкладки:

Для выбора вкладки нажмите Enter. Затем можете просматривать нужные данные, чтобы вернуться обратно ещё раз нажмите Enter.

Выводы

Из этой статьи вы узнали что из себя представляет команда top Linux. Как видите, утилита довольно мощная, хотя при первом запуске сложно подумать что она столько всего может и будет выглядеть настолько красиво если её настроить. Но я всё же привык к старой доброй ps. А какой утилитой пользуетесь вы для просмотра запущенных процессов? Напишите в комментариях!

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Если в коммандной строке линукс системы вы наберете команду top, то получите табличку со следующим заголовком:


Давайте разберем значение каждой из строк.

load average: 0,00, 0,01, 0,05
В этой части показывается средняя нагрузка; она может сбивать с толку, особенно на виртуальной машине/в облаке.
Первая цифра показывает среднюю нагрузку «последней минуты», или «текущую» среднюю нагрузку; вторая цифра показывает «среднюю нагрузку за 5 минут», последняя цифра – «среднюю нагрузку за 15 минут».
Средняя нагрузка – мера среднего числа процессов, ожидающих своей очереди, чтобы совершить какое-либо действие в процессоре. Как и в супермаркете, приходится стоять в очереди, дожидаясь, пока кассир уделит вам все свое внимание. Причина, по которой средняя нагрузка растет, заключается в остальной статистике и счетчиках, находящихся ниже этой линии, поэтому, если ориентироваться строго на значения средней нагрузки, можно не увидеть всей картинки полностью.

Вот пример, взятый из узла distcc:

Данный сервер, кроме того, что является средой промежуточной обработки для скриптов и хостингом инструментов командной строки облака, предоставляет также распределенную службу C компилятора различным машинам, находящимся в нашей сети, поскольку она имеет 8 процессоров, 32 ГБ оперативной памяти и тонну псевдодискового пространства. При нормальной нагрузке, среднее ее значение остается относительно низким; при выполнении java-скриптов нагрузка может вырастать в два и более раза. Однако при выполнении службы компилятора при полной нагрузке (10 выполняемых процессов при загрузке процессора, равной 95% или выше), среднее значение нагрузки составляет 0,75… Как же так получается? Попытаемся разобраться

Строка Tasks

Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie
Tasks: показывает количество процессов, когда вы набираете, например, “ps aux”.
• total Общее количество задач полезно знать для выявления вышедшего из-под контроля сервера apache или экземпляра postgresql, но оно обычно остается достаточно стабильным.
• running Количество запущенных процессов показывает вам, как в настоящее время используется ваш процессор. Приложения, не имеющие многопоточности, за один раз, как правило, могут использовать 1 процессор, поэтому обычным делом является ситуация, когда 1 процесс использует 25% процессора четырехъядерного сервера со средней нагрузкой

1.
• sleeping Количество ждущих процессов показывает, какие процессы выполняются, но не являются активными; обычно это фоновые задачи, системное ПО, драйвера принтера и т.д.
• stopped Количество остановленных процессов должно, как правило, равняться 0, если вы не послали процессу сигнал a SIGSTOP или kill -STOP для устранения неисправностей. Если это число отличается от 0, то, в случае с рабочими серверами это может служить поводом для беспокойства.
• zombie Зависшие процессы. Это означает, что многопоточное приложение запустило дочерний процесс, а затем было уничтожено или неожиданно завершено, оставив после себя повисший процесс, известный, как zombie-процесс. Apache может наплодить целую кучу таких процессов в случае, если происходит что-то из ряда вон выходящее. Обычно, их число тоже должно равняться 0.

Строка Cpu

Я разобью эту информацию на две части, в них содержится статистика, важная для нашего использования.

0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Второй набор значений связан с виртуализацией, и именно по ним мы можем точно отследить те проблемы, которые, возможно, вносят вклад в высокое значение средней нагрузки.

• %wa – iowait, процент времени (циклов, секунд), в течение которого процессор простаивал, ожидая завершения операции ввода-вывода. Когда какой-либо процесс или программа запрашивает данные, он сначала проверяет кэш процессора (в нем имеется 2 или 3 кэша), затем проверяет память и, наконец, доходит до диска. Дойдя до диска, процессу или программе обычно приходится ждать, пока поток ввода-вывода передаст информацию в оперативную память, прежде чем иметь возможность снова на нем работать. Чем медленнее диск, тем выше будет значение IO Wait % для каждого процесса. Это происходит также с процессами записи на диск, если системный буфер заполнен и его необходимо прочистить при помощи ядра – обычно это наблюдается на серверах баз данных с высокой нагрузкой. Если значение IO Wait стабильно превышает %, это означает, что, возможно, имеется проблема хранения, с которой необходимо разобраться. Если вы наблюдаете высокую среднюю нагрузку, прежде всего, проверьте этот параметр. Если он высок, тогда узкое место в процессах, скапливающихся на диске, а не в чем-либо еще.
• %hi означает прерывания на уровне железа; на плате электроны движутся по микросхемам предсказуемым образом. Например, когда сетевая карта получает пакет, перед передачей информации, содержащейся в пакете в процессор через ядро, она запросит прерывание в канале прерывания материнской платы. Процессор сообщает ядру, что у сетевой карты для него есть информация, а ядро имеет возможность решить, как поступить. Высокое значение времени, тратящегося на обработку прерываний на уровне железа встречается на виртуальной машине довольно редко, но по мере того, как гипервизоры предоставляют в распоряжение виртуальных машин все больше «железа», эта ситуация может измениться. Чрезвычайно высокая пропускная способность сети, использование USB, вычисления на графических процессорах, — все это может привести к росту этого параметра на величину, превышающую несколько процентов.
• %si – прерывание на уровне софта; в ядре linux версии 2.4 реализована возможность запроса прерывания программным обеспечением (приложениями), а не элементом аппаратного обеспечения или устройством (драйвером), запрашивающим прерывание в канале прерывания материнской платы; запрос обслуживается ядром посредством его обработчика прерываний. Это означает, что приложение может запросить приоритетный статус, ядро может подтвердить получение команда, а программное обеспечение будет терпеливо ждать, пока прерывание не будет обслужено. Если мы применим утилиту tcpdump к гигабитному каналу с высоким трафиком, то значение может измениться примерно на 10%, — по мере заполнения выделенной памяти tcpdump, утилита посылает зарос на прерывание, чтобы переместить данные со стека на диск, экран, или куда угодно еще.
• %st — самый важный параметр из всех в списке, по моему мнению, это IOSteal%. В виртуализированной среде множество логических серверов могут работать под одним фактическим гипервизором. Каждой виртуальной машине(VM) мы присваиваем 4-8 «виртуальных» CPU; хотя сами гипервизоры могут не иметь (кол-во VM * кол-во виртуальных CPU на одну VM). Причина этого заключается в том, что мы не перегружаем CPU использованием наших виртуальных машин, так что если мы дадим одной-двум VM возможность изредка использовать 8 процессоров, это не будет негативно влиять на весь пул в целом. Однако если виртуальными процессорами VM используется количество CPU, превышающее количество физических (или логических, в случае с гиперпотоковыми процессорами Xeon), тогда значение iosteal будет расти.

iosteal% — мера загруженности гипервизора; наличие в каком-либо пуле виртуальных машин, демонстрирующих стабильно высокое значение параметра iosteal% (более 15%) может свидетельствовать о необходимости переноса некоторых из VM в другую часть пула.

iowait% является показателем производительности диска. В системе хранения данных, поддерживаемой NetApp, у нас может не получиться решить проблему производительности без перемещения тома на менее используемый, или другой диск NetApp. В случае с локальным диском (SSD или SAS) это может означать, что в гипервизоре имеется слишком много VM, интенсивно использующих ресурсы диска, и может потребоваться перенести некоторые из этих VM в другую часть пула.

Подведем итоги:

• Средняя нагрузка, на самом деле, ни о чем не говорит.
• Параметр %userland (%us) важен для средней нагрузки, поскольку он говорит о том, что производятся вычисления. Например, mysql, займет всего один поток, поэтому при полной нагрузке будет использовать (1/кол-во виртуальных CPU, присвоенных VM). postgresql является многопоточным, и может использовать больше процессоров, если они будут выделены, – помните об этом, создавая виртуальные машины в гипервизоре, чтобы предотвратить:
• %st – iosteal% — показатель загруженности гипервизора. Создание стека из 4-х postgresql и 6 серверов tomcat под одним гипервизором может быть разумным с точки зрения бизнеса, но вам придется все время конкурировать за процессорное время.
• %wa – iowait% — показатель количества времени, которое уходит на отсылку ваших процессов на невероятно медленные диски, неважно какое решение для хранения данных вы используете. Диски, даже SSD, сравнительно медленные. Добавление ОЗУ для увеличения буфера ядра может немного смягчить проблему. ОЗУ дешевле диска, если учесть, насколько молниеносно она работает по сравнению с ним.

Дополнительные команды

iostat
Если вы столкнулись с высокими значениями параметров iowait или iosteal, можно с точностью отследить, какой диск является этому причиной, при помощи команды iostat. Запускается она таким образом:


Более подробно, см. руководство по iostat. Разбивка, выводимая каждую секунду, с каких и на какие диски идет чтение/ запись, а также все значения iosteal или iowait, связанные с доступом к этим дискам.

htop
Команда по использованию CPU и процессов на системе Linux. Он не показывает виртуальную статистику, но отображает дерево процессов, а также разбивку каждого процессора в системе, его использование; кроме того, он показывает статистику свопинга и памяти, позволяющую отследить неприятные утечки памяти, раскрашивая все это симпатичными цветами. По моему мнению, этот пакет должен быть обязательным для всех VM.

Программа top для показа процессов Linux в реальном времени

Программа top показывает запущенные в Linux процессы программ и служб.

С помощью top можно наблюдать в реальном времени динамику работающей системы. Программа показывает обобщённую информацию по системе, а также список процессов или потоков, обслуживающихся в настоящее время ядром Linux.

Можно настроить, какая именно информация о системе и процессах выводится и в каком виде. Именно этому и посвящена данная статья — я покажу, как вы можете извлечь максимум из программы top управляя её внешним видом и выводимыми данными. Можно полностью настроить программу под себя для максимально удобного восприятия информации и показа той информации, которая в стандартном режиме отсутствует. Это можно сделать в рамках текущего запуска программы, либо сохранить сделанные изменения, чтобы не настраивать top каждый раз.

Пример интерфейса top после настройки:


Кроме всеобъемлющих возможностей для персональной настройки, программа предоставляет ограниченный интерактивный интерфейс управления процессами.

Как увидеть запущенные процессы в Linux (аналог менеджера задач Windows)

Чтобы увидеть, какие процессы запущены, выполните:


Что означают цифры в top (как понимать вывод top)

Начнём с краткой характеристики стандартного интерфейса top. Как уже было сказано, его можно почти полностью сконфигурировать под свои предпочтения.

Верхняя часть программы показывает краткую обобщённую информацию об использовании процессора и оперативной памяти системы.

В самой верхней строке показано: текущее время в системе, аптайм (время работы после загрузки), общее количество пользователей и средняя нагрузка за последние 1, 5 и 15 минут.

Далее идут строки с информацией о:

  • задачах
  • процессоре
  • оперативной памяти
  • разделе подкачки

Далее идёт перечень запущенных процессов. По умолчанию выводиться следующая информация:

PID — уникальный идентификатор процесса

USER — имя пользователя, являющегося владельцем задачи

PR — приоритет задачи в расписании. Если вы в этом поле видите «rt», это означает, что задача запущена в расписании приоритетов в реальном времени (это самый высокий приоритет).

NI — значение nice задачи. Негативное значение означает более высокий приоритет, а положительное значение nice означает более низкий приоритет

VIRT — общее количество используемой задачей виртуальной памяти, включает все коды, данные, совместные библиотеки, плюс страницы, которые были перенесены в раздел подкачки, и страницы, которые были размечены, но не используются

RES — используемая оперативная память, является подмножеством VIRT, представляет физическую память, не помещённую в раздел подкачки, которую в текущий момент использует задача. Также является суммой полей RSan, RSfd и Rssh.

SHR — размер совместной памяти, подмножество используемой памяти RES, которая может использоваться другими процессами

S — статус процесса. Может быть:

%CPU — использование центрального процессора, доля задачи в потреблённом процессорном времени с момента последнего обновления экрана, выражается в процентах от общего времени CPU

%MEM — доля задачи в использовании памяти (RES)

TIME+ — общее время центрального процессора, которое использовала задача с момента запуска

COMMAND — Имя команды или Строка команды. Показывает строку команды, используемую для запуска задачи или имя ассоциированной программы

Прокрутка окон top

Вы можете прокручивать список процессов вверх и вниз, а также вправо и влево, используя курсорные клавиши (стрелки).

Показ скрытие общей нагрузки/аптайма

Начнём с совсем простого — вы можете убрать либо вернуть верхнюю строку, показывающую нагрузку и аптайм, для этого нажимайте клавишу l.

Переключение в цветной режим

С помощью кнопки z можно переключаться между монохромным и цветным отображением.


Цветовую схему можно настроить, то есть можно установить свои цвета.

Показ загруженности каждого ядра

С помощью кнопки 1 вы можете переключаться и выводить обобщённую информацию о загрузке процессора в одной строке, либо в нескольких строках по каждому ядру.

Показ гистограммы загрузки процессора

Кнопка t по кругу переключает вид строки обобщённой информации об использовании процессора. Варианты:

1. детальная информация по категориям

2. сокращённая пользователь/система и общий % + гистограмма

3. Сокращённая пользователь/система и общий % + блок-диаграмма

4. отключение отображения статусов задач и CPU

У меня на сриншоте вместо гистограмм белые области — просто процессор бездействует, в данный момент мало запущенных задач.


Показ гистограммы загрузки памяти

Переключатель m работает аналогично предыдущему, но для оперативной памяти (физической и виртуальной). Четыре аналогичных режима:

1. подробные проценты по типу памяти

2. сокращённый % используемая/общая доступная + гистограмма

3. сокращённый % используемая/общая доступная + блок-диаграмма

4. выключение показа памяти

Использование полужирного выделения

Некоторые данные, например, задачи, потребляющие много процессорного времени, выделяются полужирным. Это поведение по умолчанию. Его можно отключить/включить командой b.

Подсветка столбца, используемого для сортировки

Список процессов показывается не в случайном порядке — он отсортирован по определённому значению. Можно отсортировать по разным столбцам. И если вы забыли, какой столбец используется для сортировки, то нажмите кнопку x и этот столбец будет выделен полужирным. Нажмите x ещё раз, для возврата в исходное состояние.

Показ команды запуска

Вы можете посмотреть строку команды, которой она была запущена (имя программы вместе с опциями командной строки) с помощью кнопки c. Для возврата к показу имени программы, нажмите c ещё раз.


Как посмотреть процессы только определённого пользователя

Используйте кнопку u или U, а затем введите имя пользователя, для которого вы хотите увидеть процессы. Опция -u соответствует только эффективному пользователю, в то время как -U соответствует любому пользователю (реальному, эффективному, сохранённому или файловой системы).

Будут показаны процессы только указанного пользователя или пустой экран — если процессов нет. Перед именем пользователя можно поставить ! (восклицательный знак) и тогда будут показаны процессы для всех пользователей, кроме указанного.

Древовидный вид процессов и дочерних процессов

Используя клавишу V можно переключиться на древовидный вид и обратно. В этом режиме процессы реорганизуются в соответствии с их родителями и столбец COMMAND показывает это дерево.

Большая V означает, что нужно одновременно нажимать Shift+v.


В древовидном виде по-прежнему можно использовать интерактивную команду c для переключения на вид строки команды. Также доступна интерактивная команда H для переключения между процессами и потоками.

Показ только активных процессов

Кнопкой i можно переключаться между всеми или только активными задачами.

Просмотр потоков

По умолчанию top показывает суммарную информацию по всем потокам каждого процесса. Используя H можно переключиться на показ потоков.

Как поменять интервал обновления информации в top

По умолчанию информация обновляется раз в три секунды. Используя интерактивную команду d или s вы можете ввести установить любой другой интервал. После нажатия одной из этих кнопок вам нужно будет ввести значение в секундах. Можно вводить дробные числа, но нельзя вводить отрицательные. Если ввести 0, то программа будет непрерывно обновлять информацию и при этом потреблять много процессорного времени.

Если вы хотите узнать, какое время задержки установлено в текущий момент, нажмите h и во второй строке найдите строку со словом Delay.

Как изменить сортировку процессов / Как отсортировать по используемой памяти

По умолчанию сортировка выполняется по количеству использования центрального процессора — чем больше задача потребляет ресурсов CPU, тем она выше в списке. Если переключиться в режим древовидного просмотра, то это правило не действует. Также можно выполнить сортировку по другим характеристикам процессов. Например, по количеству используемой оперативной памяти.

Как уже говорилось выше, чтобы увидеть, какой именно столбец используется для сортировки, нажмите x.

Как искать в top

Вы можете выполнять поиск процессов и строк, содержащих определённое значение.

Для этого нажмите L (Shift+l), появится приглашение ввести слово для поиска. Поиск чувствителен к регистру. Нет ограничений на содержимое поисковой строки.

Поиски не ограничены значениями из единичного столбца или колонки. Все величины, показываемые в строках задач, разрешены для поиска по ним. Вы можете включать пробелы, цифры, символы.

Для перехода к следующему совпадению поиска отправьте символ &.

Если активен поиск, top отключит подсветку столбцов, чтобы предотвратить смешение с результатами поиска. То есть x потеряет своё действие. Подсветка столбцов будет восстановлена при прекращении поиска. Для этого можно указать в качестве поисковой строки пустое значение.

Сброс фильтров

Для сброса фильтров используются = и +. Их действия чуть различны, кнопка = действует на текущее видимое окно задач. А кнопка + действует на все окна при альтернативном отображении. Сбрасываются фильтры, установленные с помощью:

Управления полями

Вы можете добавить или удалить поля. Для этого нажмите f или F. Будет открыто новое окно:


В нём выберите интересующее вас поле, для его добавления, нажмите d, для сортировки по выбранному полю, нажмите s.

Многооконный режим top (как в top включить несколько вкладок)

Программа top поддерживает работу с несколькими окнами — до четырёх. Причём в каждом из них можно сделать совершенно разные настройки и наблюдать за различными характеристиками системы.

Многооконный вид top называется альтернативным режимом отображения. Для его включения нажмите A. Чтобы последовательно переключаться между окнами нажимайте a (переход к следующему) или w (возврат к предыдущему). Чтобы узнать, какое именно окно является открытым в данный момент, посмотрите на самую верхнюю строчку (если вы не отключили её кнопкой l) — там будет содержаться номер и название активного окна.

С помощью интерактивной команды g можно быстро переключаться между окнами. После её нажатия нужно будет ввести цифры от 1 до 4. Кстати, команда g работает как в многооконном режиме, так и в режиме одного окра. В последнем случае также происходит переключение на другое окно.

Вы можете установить имя окна (которое отображается в самом верху, для этого используйте команду G. После её отправки вам нужно будет ввести новое имя текущего окна.

Для каждого окна можно установить свой собственный набор полей, независимый от других окон, настроить сортировку и отображение.

Как в top сделать 2 или 3 окна вместо четырёх

Возможно, что 4 окна для вас слишком много. Вы можете спрятать некоторые окна и таким образом получить 2 или 3 активных окна. Чтобы спрятать или показать текущее активное окно, используйте кнопку -.

Кнопка _ работает аналогично, но сразу для всех окон.

Пример двухоконного режима, в первом окне я наблюдаю для приложениями, создающими максимальную нагрузку на процессор (сортировка по %CPU, показаны только активные процессы), во втором окне я наблюдаю за приложениями, больше всех потребляющие оперативную память (сортировка по %MEM):


Как остановить процесс через top

Чтобы завершить процесс (процесс), нажмите k. Затем вам нужно будет ввести PID этого процесса и сигнал для отправки (можно оставить значение по умолчанию).

Изменение значение nice процесса

Для изменения значения nice процесса нажмите r, вам будет предложен ввести PID и затем значение nice для присвоения ему.

Положительное значение nice означает потерю приоритета процессом. Напротив, негативное значение nice приведёт к тому, что процесс окажется в большей фаворе у ядра. По общему правилу, обычные пользователи могут только увеличить значение nice и не могут его понизить.

Как использовать top в скриптах

Программа top также поддерживает опции командной строки. Большинство из этих опций соответствуют рассмотренным интерактивным командам — но перед ними нужно поставить дефис.

Сама программа top может использоваться в скриптах. Для выполнения команды в этом режиме применяется опции -b. Эта опция полезна для отправки вывода top в другую программу или в файл. В этом режиме top не будет принимать ввод и будет работать до достижения предела повторений, который устанавливается ключом -n. К примеру, запуск команды top в пакетном режиме с одним обновлением информации:

Сохранение настроек top

Используйте интерактивную команду W для записи конфигурационного файла. Она сохранит все ваши опции и переключатели, плюс текущий режим отображения и время задержки. Набрав эту команду перед выходом top вы сможете перезапустить её затем в точно таком же состоянии.

Программ напишет, куда именно она сохранила конфигурационный файл. Обычно это файл

/.config/procps/toprc. То есть, если вы хотите сбросить ваши пользовательские настройки top, то удалите этот файл.

Любой сервер, каким бы мощным он ни был, имеет ограниченный объем ресурсов. Каждая программа, работающая в активном или фоновом режиме, использует определенное количество виртуальной и физической памяти, процессорного времени и т.д. Иными словами, создает определенную нагрузку на сервер. Чтобы посмотреть, насколько система загружена в данный момент времени, используют консольную команду top.

Команда top в Linux системах позволяет вывести в виде таблицы перечень запущенных процессов и оценить, какой объем ресурсов они потребляют, т.е., какую нагрузку создают на сервер и дисковую подсистему. Такая информация помогает в дальнейшем оптимизировать работу системы.

Запуск команды top и расшифровка таблицы

Запуск команды top и расшифровка таблицы

О том, как сортировать данные по критерию, который нужен вам, поговорим дальше. А сейчас давайте рассмотрим, как расшифровать столбцы в таблице и о чем свидетельствуют значения в каждом из них.

Следующие 2 столбца показывают, какой приоритет имеет процесс в данный момент (PR) и приоритет, присвоенный ему командой NICE (NI).

Информация, содержащаяся в других колонках, характеризует непосредственно уровень потребления ресурсов. Расшифровываются они следующим образом:

Расшифровка данных перед таблицей

Полезная информация об использовании ресурсов содержится не только в самой таблице, но и в пяти строках, которые ей предшествуют. Они являются своего рода summary по всем процессам.

Первая строчка (top) дает нам общее представление о загрузке системы. Здесь указано:

Считается, что в норме данный показатель не должен превышать 1 для одноядерных процессоров. Соответственно, значение load average, равное количеству ядер, является предельным.

Вторая строка данных дает информацию об общем количестве процессов в системе, а также об их статусе: выполняемые (running), в ожидании (sleeping), приостановленные (stopped), zombie.

Далее идет информация о состоянии процессора (%Cpu), ОЗУ (Mem), SWAP.

Добавление столбцов и сортировка таблицы top

Теперь вы знаете, какая информация зашифрована в каждом столбце таблицы top. Как было отмечено в начале, базовая сортировка данных осуществляется по уровню использования времени ЦПУ, оно же %CPU. Чтобы выполнить в top сортировку по памяти (%MEM), достаточно ввести Shift+M в режиме работы команды top. Если интересует, какой из процессов дольше всего работает, нажмите Shift+T, и увидите интересующую информацию в колонке TIME+. Можно отсортировать процессы по их номеру (PID), набрав на клавиатуре Shift+N.

Чтобы вернуться к режиму сортировки по уровню потребления ресурсов процессора, воспользуйтесь комбинацией Shift+P.

Добавление столбцов и сортировка таблицы top

Сортировка по заданному признаку

Теперь вы не только знаете, как расшифровать содержащуюся в таблице информацию, но и умеете добавлять в нее необходимые параметры, работать с фильтрами. Благодаря команде top вы легко найдете процессы, которые потребляют наибольшее количество ресурсов и/или работают без надобности.

Команда top позволяет пользователям отслеживать процессы и использование системных ресурсов в Linux. Это один из самых полезных инструментов в наборе инструментов системного администратора, и он предустановлен в каждом дистрибутиве. В отличие от других команд, таких как ps, он является интерактивным, и вы можете просматривать список процессов, завершать процесс и так далее.

В этой статье мы собираемся понять, как использовать команду top.

Давайте начнём:

Как вы, возможно, уже догадались, вам просто нужно ввести команду, чтобы запустить top:

Она запустит интерактивное приложение командной строки, подобное тому, что на скриншоте ниже. Верхняя половина выходных данных содержит статистику процессов и использования ресурсов, а нижняя - список текущих запущенных процессов. Вы можете использовать клавиши со стрелками и клавиши Page Up / Down для просмотра списка. Если вы хотите выйти, просто нажмите «q».


Понимание верхней части интерфейса

Как мы уже видели, вывод top делится на два разных раздела. В этой части статьи мы сосредоточимся на элементах в первой половине вывода. Этот регион также называется «суммарной областью».

Системное время, время работы и пользовательские сессии


В самом верхнем левом углу экрана (как отмечено на скриншоте выше) сверху отображается текущее время. Затем следует время безотказной работы системы, которое сообщает нам время, в течение которого система работала. Например, в нашем примере текущее время - «16:55:40», и система работает 86 дней.

Далее идет количество активных пользовательских сессий. В этом примере есть два активных пользовательских сеанса. Эти сеансы могут проводиться либо по TTY (физически в системе, либо через командную строку, либо в среде рабочего стола), либо по PTY (например, через окно эмулятора терминала или через SSH). Фактически, если вы войдете в систему Linux через среду рабочего стола, а затем запустите эмулятор терминала, вы обнаружите, что будет два активных сеанса.

Если вы хотите получить более подробную информацию об активных сеансах пользователя, используйте who команду.

Использование памяти


Раздел «память» показывает информацию об использовании памяти системой. Строки, помеченные «Mem» и «Swap», показывают информацию об оперативной памяти и пространстве подкачки соответственно. Проще говоря, пространство подкачки является частью жесткого диска, который используется как ОЗУ. Когда использование ОЗУ становится почти полным, нечасто используемые области ОЗУ записываются в пространство подкачки и готовы для последующего извлечения при необходимости. Однако из-за медленного доступа к дискам слишком сильная зависимость от подкачки может снизить производительность системы.

Как и следовало ожидать, значения «total», «free» и «used» имеют свои обычные значения. Значение «util mem» - это объем памяти, который может быть выделен процессам без дополнительной замены.

Ядро Linux также пытается сократить время доступа к диску различными способами. Он поддерживает «дисковый кэш» в ОЗУ, где хранятся часто используемые области диска. Кроме того, записи на диск сохраняются в «дисковый буфер», и ядро ​​в конечном итоге записывает их на диск. Общая потребляемая ими память является значением «buff / cache». Это может звучать плохо, но на самом деле это не так - память, используемая кешем, будет выделяться процессам при необходимости.

Задачи


Раздел «Задачи» показывает статистику процессов, запущенных в вашей системе. «Общее» значение - это просто общее количество процессов. Например, на приведенном выше снимке экрана запущено 142 процесса. Чтобы понять остальные значения, нам нужно немного рассказать о том, как ядро ​​Linux обрабатывает процессы.

Процессы выполняют смешанную работу, связанную с вводом / выводом (например, чтение дисков), и работу, связанную с ЦП (например, выполнение арифметических операций). Процессор простаивает, когда процесс выполняет ввод / вывод, поэтому ОС переключаются на выполнение других процессов в течение этого времени. Кроме того, ОС позволяет заданному процессу выполняться в течение очень небольшого промежутка времени, а затем переключается на другой процесс. Вот как ОС выглядят так, как если бы они были «многозадачными». Выполнение всего этого требует от нас отслеживания «состояния» процесса. В Linux процесс может находиться в следующих состояниях:

Runnable (R): процесс в этом состоянии либо выполняется на CPU, либо присутствует в очереди на выполнение, готовый к выполнению.
Прерываемый сон (S): процессы в этом состоянии ожидают завершения события.
Непрерывный сон (D): в этом случае процесс ожидает завершения операции ввода-вывода.
Остановлено (T): эти процессы были остановлены сигналом управления заданием (например, нажатием Ctrl + Z) или потому, что они отслеживаются.
Zombie (Z): ядро ​​поддерживает различные структуры данных в памяти, чтобы отслеживать процессы. Процесс может создать несколько дочерних процессов, и они могут завершиться, пока родительский процесс еще существует. Однако эти структуры данных должны храниться до тех пор, пока родительский объект не получит статус дочерних процессов. Такие завершенные процессы, чьи структуры данных все еще существуют, называются зомби.
Процессы в состояниях D и S показаны в «спящем» режиме, а процессы в состоянии T - в «остановленном». Количество зомби показано как значение «зомби».

Использование процессора


Раздел использования ЦП показывает процент времени, затраченного ЦП на различные задачи. us Значение времени ЦП проводит выполняющиеся процессы в пользовательском пространстве. Точно так же sy значение - это время, потраченное на запуск процессов в пространстве ядра.

Linux использует «хорошее» значение для определения приоритета процесса. Процесс с высоким «хорошим» значением «приятнее» другим процессам и имеет низкий приоритет. Аналогично, процессы с более низким значением «nice» получают более высокий приоритет. Как мы увидим позже, «хорошее» значение по умолчанию может быть изменено. Время, затраченное на выполнение процессов с установленным вручную «nice», отображается в качестве niзначения.

Затем следует idвремя, в течение которого процессор остается бездействующим. Большинство операционных систем переводят ЦП в режим энергосбережения, когда он находится в режиме ожидания. Далее следует waзначение, которое время ЦП тратит на ожидание завершения ввода-вывода.

Прерывания - это сигналы для процессора о событии, которое требует немедленного внимания. Аппаратные прерывания обычно используются периферийными устройствами, чтобы сообщить системе о событиях, таких как нажатие клавиш на клавиатуре. С другой стороны, программные прерывания генерируются из-за определенных инструкций, выполняемых на процессоре. В любом случае ОС обрабатывает их, и время, затрачиваемое на обработку аппаратных и программных прерываний, задается hiи siсоответственно.

В виртуализированной среде часть ресурсов ЦП предоставляется каждой виртуальной машине (ВМ). ОС определяет, когда у нее есть работа, но она не может выполнить ее, потому что ЦП занят на другой виртуальной машине. Количество времени, потерянное таким образом, является временем «кражи», обозначенным как st.

Средняя нагрузка


Секция средней нагрузки представляет собой среднюю «нагрузку» за одну, пять и пятнадцать минут. «Нагрузка» - это мера вычислительной работы, которую выполняет система. В Linux загрузка - это количество процессов в состояниях R и D в любой момент времени. Значение «средняя загрузка» дает вам относительную меру того, как долго вы должны ждать, чтобы что-то было сделано.

Давайте рассмотрим несколько примеров, чтобы понять эту концепцию. В одноядерной системе средняя нагрузка 0,4 означает, что система выполняет только 40% работы, которую она может выполнить. Среднее значение нагрузки, равное 1, означает, что система точно загружена - система будет перегружена, если добавить еще немного дополнительной работы. Система со средней нагрузкой 2,12 означает, что она перегружена на 112% больше работы, чем может выдержать.

В многоядерной системе сначала нужно разделить среднюю нагрузку на количество ядер ЦП, чтобы получить аналогичный показатель.

Кроме того, «средняя нагрузка» на самом деле не является типичной «средней», которую большинство из нас знает. Это « экспоненциальное скользящее среднее », что означает, что небольшая часть предыдущих средних нагрузок учитывается в текущем значении.

Понимание интерфейса top: область задач

Сводная область сравнительно проще и содержит список процессов. В этом разделе мы узнаем о различных столбцах, показанных в выводе по умолчанию top.


PID
Это идентификатор процесса, уникальное положительное целое число, которое идентифицирует процесс.

USER
Это «эффективное» имя пользователя (которое сопоставляется с идентификатором пользователя) пользователя, запустившего процесс. Linux назначает действительный идентификатор пользователя и эффективный идентификатор пользователя процессам; последний позволяет процессу действовать от имени другого пользователя. (Например, пользователь без полномочий root может подняться до уровня root для установки пакета.)

PR и NI
Поле «NI» показывает «хорошее» значение процесса. Поле «PR» показывает приоритет планирования процесса с точки зрения ядра. Хорошее значение влияет на приоритет процесса.****

VIRT, RES, SHR и %MEM
Эти три поля связаны с потреблением памяти процессами. «VIRT» - это общий объем памяти, потребляемой процессом. Это включает код программы, данные, хранящиеся процессом в памяти, а также любые области памяти, которые были выгружены на диск. «RES» - это память, используемая процессом в ОЗУ, а «% MEM» выражает это значение в процентах от общего объема доступной ОЗУ. Наконец, «SHR» - это объем памяти, совместно используемый другими процессами.

S
Как мы уже видели, процесс может находиться в разных состояниях. В этом поле отображается состояние процесса в однобуквенной форме.

TIME+
Это общее время ЦП, использованное процессом с момента его запуска, с точностью до сотых долей секунды.

COMMAND
Столбец КОМАНДА показывает название процессов.

Читайте также: