...

Что за программа top

Информация о процессах в Linux. Команда Top

При работе в интерфейсе командной строки Linux часто требуется информация о процессах, например, какая программа потребляет больше всего ресурсов процессора или памяти. Для этого есть специальная команда — top. В данном руководстве мы разберем, как она работает, на нескольких простых и понятных примерах..

Синтаксис

Команда top выводит краткие данные о системе и список процессов, обрабатываемых ядром Linux, а также связанную с ними полезную информацию. Ее синтаксис следующий:

top [ОПЦИИ] [АРГУМЕНТЫ]

Информация динамически обновляется в реальном времени. Конкретные отображаемые данные для информации о системе и процессах пользователь может настроить сам и сохранить для последующих запусков. Команда предоставляет интерактивный интерфейс для работы с процессами и индивидуальной настройки.
Использование 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”, и программа запросит идентификатор процесса, который вам нужно остановить. Прямо над таблицей с информацией о процессах вы увидите сообщение следующего вида:

PID to signal/kill [default pid = 1]

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

Send pid 109 signal [15/sigterm]

Здесь мы остановили программу с PID 109

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

Если вам требуется изменить приоритет программы, нажмите ‘r’. Вы увидите вот такое сообщение:

PID to renice [default pid = 627]

Аналогично предыдущему примеру, можно ввести PID или по умолчанию изменить приоритет первого процесса в списке. Программа запросит новое значение приоритета (nice):

Renice PID 627 to value

Введите значение и нажмите Enter. Значение приоритета заданного процесса будет изменено.

Изменение интервала обновления

По умолчанию результат top обновляется каждые 3 секунды, но этот интервал можно изменить, нажав ‘d’. Команда запросит новое значение:

Change delay from 3.0 to

Введите его и нажмите Enter.

Вывод процессов заданного пользователя

Команда top по умолчанию отображает все процессы, но вы можете ограничить выводимые результаты процессами конкретного пользователя. Для этого нужно нажать ‘u’. Вы увидите сообщение следующего вида:

Which user (blank for all)

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

Например, если ввести ‘root’, результат будет иметь следующий вид:

Также можно воспользоваться опцией командной строки -u и указать нужного пользователя сразу при запуске команды:

top -u root

Отображение абсолютных путей команд

Чтобы полностью увидеть команды, которые были инициаторами процессов, со всеми опциями командной строки и аргументами, нужно нажать ‘c’:

Вы увидите абсолютные пути команд, а также все опции и аргументы.

Сортировка вывода

Для сортировки отображения во время работы команды top введите одно из значений

  • [M] Сортировать по объёму используемой памяти.
  • [P] Отсортировать по загрузке процессора.
  • [u] Сортировать по имени пользователя.

Например сортировка по использованию объема памяти выглядит так

Цветовое выделение запущенных процессов

Чтобы выделить запущенные процессы другим цветом, нажмите клавишу ‘z’. Это поможет вам легче выявлять такие процессы.

Выход после заданного числа обновлений

По умолчанию top обновляет выводимые данные до нажатия ‘q’ (выход из программы). Опция -n при запуске позволяет указать необходимое количество обновлений, после которых выход произойдет автоматически. Например, следующая команда выполнит 10 обновлений:

top -n 10

Сохранение результатов в файл

Для сохранения выводимых командой top результатов в файл выполните следующую команду. Опция -b активирует “пакетный” режим: top не будет принимать входных команд, выполнив заданное опцией -n количество обновлений.

top -n 1 -b > top-output.txt

Получение помощи и выход из программы
Для получения помощи о команде top нажмите ‘h‘:

Чтобы выйти из программы, как уже упоминалось, нажмите ‘q’.

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Using top to Monitor Server Performance

Estamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.

Create a Linode account to try this guide with a $ credit .
This credit will be applied to any valid services used during your first days.

Viewing a server’s processor activity in real-time can aid in discovering and diagnosing any problems in CPU and memory usage. The top command is a Linux process manager that can assist with monitoring.

Reading the Screen

The top screen contains a variety of information regarding your server, beginning with the server’s uptime, load average, and tasks status, located in the header.

top screen heading

    The first line contains the time, uptime, and load average values for the server. The load average is displayed over 1, 5, and 15 minutes to provide a better overall look at the load your server has undertaken. If there is a spike at one minute, but the load at the five- and fifteen-minute marks is maintained at a lower level, then consider a different response compared to when the load is consistently high through all time intervals.

In order to properly read the load average section, be aware of how many CPU cores the Linode has. If there is one CPU core, then a load average of 1.00 means the server is at its capacity. This number increases to 2.00 on a Linode with 2 CPU cores, 4.00 with 4, etc. A load of .70 for a Linode with 1 core is generally considered the threshold. Any higher than this, then reconfigure your resources or look into upgrading your plan.

Following the heading section is a list of processes and related data:

Top processes

  • PID: The process ID.
  • USER: The username of the task’s owner.
  • PR: The task’s priority, ranging from -20 to 19, with -20 being the most important.
  • NI: The nice value, which augments the priority of a task. Negative values increase a task’s priority, while positive values decrease it.
  • VIRT: Virtual memory used, virtual memory being the combination of both RAM and swap memory.
  • RES: The resident size of non-swapped, physical memory in kilobytes (unless otherwise noted).
  • SHR: The shared memory size, or memory that could be allocated to other processes.
  • S: The processes status. Can be: Running ( R ), sleeping and unable to be interrupted ( D ), sleeping and able to be interrupted ( S ), traced/stopped ( T ), or zombie ( Z ). This ties in with the task list in the header.
  • %CPU: CPU percentage since last top update.
  • %MEM: Memory (RAM) percentage since last top update.
  • TIME+: Cumulative CPU time that the process and children processes have used.
  • COMMAND: Name of process.

Commands

The top command offers a set of additional commands that can be used to enhance its use through sorting and locating information.

There are two types of commands that can be used in conjunction with top : Command-line options, and interactive commands that can be used while in the program.

Command-Line Options

Command-line options can help organize and filter from the start of the program.

Important commands to know include:

  • -d[interval] : Sets the delay time that top uses to refresh the results.
  • -i : Toggles whether or not idle processes are shown.
  • -p[PID,PID] : Allows the user to filter top so only the defined processes are shown.
  • -u [username] : Filters by user.
  • -n[limit] : Sets top to run for a set amount of intervals before exiting.
  • -b : Runs top in batch mode, ideal for log files and for use in conjunction with other programs.

Used alongside one-another, these commands can prove especially useful. For example, if you want to log a set number of processes over a period of time, you can combine batch mode, the process ID filter, the delay setting, and the iteration setting to output the results you are looking for:

top -b -p[PID] -d[interval] -n[limit] 

For this example, the process ID is 2774, the delay is set to 10 seconds, and the interval is 2 cycles:

top -b -p2774 -d10 -n2 

Which outputs these results:

top - 15:20:59 up 2 days, 1:14, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 1012584 total, 507792 used, 504792 free, 24720 buffers KiB Swap: 262140 total, 0 used, 262140 free, 245800 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3774 mysql 20 0 356m 51m 10m S 0.0 5.2 1:54.01 mysqld top - 15:21:04 up 2 days, 1:14, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem: 1012584 total, 507800 used, 504784 free, 24720 buffers KiB Swap: 262140 total, 0 used, 262140 free, 245800 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3774 mysql 20 0 356m 51m 10m S 0.2 5.2 1:54.02 mysqld 

Interactive Commands

When run on its own, not in batch mode, top is interactive. You can use commands to filter through or toggle various options, alter settings, and even manipulate tasks.

Although there are a vast number of top commands, some of the more common ones to know include:

  • return or space : Instantly update screen.
  • d or s : Alter the delay time.
  • H : Show individual threads for all processes.
  • i : Toggles whether idle processes will be displayed.
  • U or u : Filter processes by the owner’s username.
  • 1 : Toggles between CPUs/CPU cores. When it reads %Cpu(s) all CPUs are being considered. %Cpu followed by a number denotes a single CPU core.
  • L : Locate string.
  • : Select sort field (from column names).
  • k : Kill a process. You will be prompted to enter the PID.
  • W : Write a configuration file. It will output the location of the file.
  • h : Open help file.
  • q : Quit.

Additional top-like Programs

top can be used in conjunction with other similar programs that either offer different output results or provide a more intuitive experience.

htop

The htop command is an alternative to top , offering an easier interface featuring color, mouse operation, the ability to scroll through processes (horizontally and vertically). It is overall more intuitive, although providing similar output as the regular top command.

For Debian/Ubuntu: apt-get install htop 
For CentOS/Fedora: yum install htop 

Run htop by entering:

htop 

The htop screen runs similar to top , but with scroll and mouse support, and a variety of menus that allow for more intuitive use. When a process is highlighted you can act on that process, such as pressing k (kill). To learn more regarding htop commands, press h to open its help menu.

iotop

The iotop command tracks the input/output operations on a per-process basis. iotop must be run as root or with the sudo prefix.

    For Debian/Ubuntu: apt-get install iotop
For CentOS/Fedora: yum install iotop 

Run iotop by entering:

iotop 

To focus only on processes running, run it with the —only suffix:

iotop --only 

iotop also shares a number of command line options with top including: -n , -b , -d , -u , and -p , but is not interactive. To learn more about operating iotop, run iotop -h in your terminal.

More Information

You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

This page was originally published on February 19, 2015.

TOP’ай сюда

Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс «-top» получили и все остальные подобные утилиты в этом обзоре.

atop

Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop’ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop’а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.

htop

В отличие от atop, htop не собирает статистику и просто показывает текущее состояние. Второе яркое отличие — нортоноподобная панелька с подсказками кнопок снизу и возможность «навигации» по списку процессов.

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

Общей статистике по системе показыват мало (зато с шкалой а-ля прогресс-бар), зато имеет обширнейшие инструменты для анализа процессов, включая баловство с скедулингом (приоритеты, affinity), просмотр списка открытых файлов, strace и массу мелких, но приятных фич, таких как контекстный поиск по имени процесса, режим «слежения» за процессом, быстрые операции с процессом и т.д.

iotop

Специализированная утилита для анализа потребления дисковой полосы. К сожалению, не показывает иопсы (это вообще возможно?) Благодаря показу kernel threads способен указать на kcopy/swapper/kflush как источник хруста винта (чего не может atop). Заодно показывает общую загруженность IO системы в Мб/с (чего так же не может atop). Довольно быстрый.

iftop

Опять же, специализированная утилита, позволяющая наблюдать за трафиком в реальном времени. Требует очень рутовых прав и pcap, т.к. работает почти аналогичо tcpdump’у. Показывает загруженность интерфейса (поддерживается только один интерфейс в одной копии), направления трафика и интенсивность трафика.

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

powertop

Специализированная (ага, снова) утилита от intel для мониторинга потребления мощности (электрической мощности!) разными процессами. В реальности никаких ваттов не показывает, а показывает время, затраченное на обслуживание процессором. Уникальна тем, что показывает прерывания и прочие события ядра на одном уровне с процессами (что позволяет находить нетривиальные ситуации перегрузки сервера и даже определять, от какой железки это исходит). При равной нагрузке позволяет оценить, чей драйвер шустрее работает.

Кроме того, во вкладке device stats позволяет оценить степень загруженности устройства (точнее, драйвера устройства). Для сетевых карт (включая виртуальные, типа tun) показывает pps (packets per seconds).

Во вкладке idle status показывает распределение состояний процессора (C1, C2, C3), что весьма полезно при выяснении «батарейка дохлая или что-то не так с системой?» на ноутбуках.

itop

Ну очень специализированная утилита для мониторинга прерываний (настоящих прерываний, идентификацией их по номеру).

kerneltop

Наверное, должен показывать что-то интересное про ядро. У меня дома ему не понравился System.map, а на сервере — отсутствие /proc/profile.

dnstop

Специализированный анализатор DNS-трафика на интерфейсе. Наверное, был бы очень полезен при починке DNS на контроллере домена, к сожалению, Active Directory на линуксе работает не очень хорошо.

Безусловно полезно для нахождения засранца, загоняющего бинд в неприличный LA.

jnettop

Почти клон iftop, однако имеет забавный режим, когда может слушать соседей и показывать top по их трафику. Не очень работает в эпоху коммутаторов.

Ещё умеет агрегацию адресов (так, чтобы показывать их трафик одной строкой).

sntop

Замечательная штука для скринсейвера или публичного монитора — по конфигу рассылает пинги и показывает, если какой-то хост лёг. В принципе, в рабочих условиях при настроенном конфиге позволяет быстро оценить состояние не очень большого парка серверов (запустили — и сразу красным видно, кто лежит).

latencytop

Я бы с интересом на него посмотрел, но оно требует особого конфига ядра…

xrestop

Монитор потребления ресурсов X-сервера разными приложениями, которые к нему подключились. (Обнаружил, что хром жрёт ресурсов х-сервера много больше, чем опера).

slabtop

Специализируется на структурах данных SLAB ядра, фактически, показывает использование памяти в более тонких категориях, чем «свободно/занято/кеш». View only, несколько режимов сортировки.

Software specific

apachetop

Не столь полезен, как хотелось бы, показывает статистику ответов на запросы. Никакой магии, просто читает логи апача.

sqtop

Топ по логам сквида. С учётом скорости их роста, сначала генерирует промежуточную статистику, а потом уже даёт по ней шариться.

pg_top

Пакет в debian почему-то называется ptop. Мониторит загрузку postgresql.

mytop

Мониторит mysql. Есть альтернативный mtop, делает примерно то же, но заброшен и (в дебиане) выпилен в районе lenny -> squeeze.

xentop

Мониториг доменов xen’а. Интересен тем, что показывает не только память-процессор, но и дисковые операции с сетью. К сожалению, никакого управления, view only. Единственный из всех top’ов, не влазящий в 80 столбцов при выводе.

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

hatop — мониторинг haproxy
virt-top — мониторинг за работой libvirt
mctop — мониторинг состояния memcached
perf-top — нашёл документацию, самого perf-top в виде тарбола или пакета не нашёл.

offTOP

Сначала ложные топы кратко:
gkrelmtop — плагин под gkrelm (монитор производительности в гуе) — оффтопик.
ntop — нарушает text-based традицию интерактивных программ и ставится как сайт для апача.
libgtop — библиотека для мониторигна производительности
nload — консольный монитор сетевой активности, в отличие от обычных top’ов не выводит рейтинг, а рисует текстовый график.

А потом настоящие топы без уважительного суффикса ‘top’ в названии.

nethogs

Отображает сетевой трафик от конкретных приложений.

iptstate

Монитор contrack из iptables, показывает активные трансляции с возможностью их прибить. Фактически, близок к цисковому sh ip nat tra , но удобнее (спасибо за наводку тов. @merlin_rterm).

При подготовке материала использовались источники:

Информация о процессах в Linux. Команда Top


https://www.linode.com/docs/guides/top-htop-iotop/
https://habr.com/ru/articles/114082/

Оцените статью