Top

Описание

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

top -hv
top -bcisS -d задержка -n повтор -p PID [,PID ...]

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

  • h — выводит экран помощи,
  • q — выход из программы.

По умолчанию top отображает на экране следующую информацию:

top - 15:36:31 up 24 min,  1 user,  load average: 0.23, 0.19, 0.20
Tasks:  69 total,   2 running,  67 sleeping,   0 stopped,   0 zombie
Cpu(s):  9.5% us,  2.6% sy,  0.0% ni, 76.7% id, 11.2% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   233356k used,    13476k free,     6920k buffers
Swap:   514072k total,        8k used,   514064k free,   110696k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4034 root      15   0  149m  17m 2092 S  4.0  7.1   0:54.95 X
    1 root      16   0   672  236  200 S  0.0  0.1   0:00.14 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root      10  -5     0    0    0 S  0.0  0.0   0:00.01 events/0
    4 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khelper
    5 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 kthread
    7 root      10  -5     0    0    0 S  0.0  0.0   0:00.06 kacpid
  100 root      10  -5     0    0    0 S  0.0  0.0   0:00.08 kblockd/0
  143 root      15   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
  144 root      15   0     0    0    0 S  0.0  0.0   0:00.00 pdflush
  103 root      15   0     0    0    0 S  0.0  0.0   0:00.00 khubd
  145 root      15   0     0    0    0 S  0.0  0.0   0:00.07 kswapd0
  146 root      16  -5     0    0    0 S  0.0  0.0   0:00.00 aio/0
  147 root      16  -5     0    0    0 S  0.0  0.0   0:00.00 xfslogd/0

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

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

В заголовке отображается следующая информация:

  • Первая строка — загрузка системы.
    • Текущее время.
    • Время работы системы после включения питания (up time).
    • Количество пользователей, которые в данный момент работают в системе.
    • Средняя загрузка системы (load average) минуту, пять минут и пятнадцать минут назад.
  • Вторая строка — процессы.
    • total — общее количество процессов в системе.
    • running — количество процессов, выполняемых процессором или стоящих в очереди на выполнение.
    • sleeping — количество процессов, ожидающих какого-либо события ввода-вывода.
    • stoped — количество приостановленных процессов.
    • zombie — количество процессов, находящихся в состоянии «зомби» (подробнее о зомби будет рассказано ниже).
  • Третья строка — состояние процессора.
    • us — процент использования процессорного времени программами пользователей.
    • sy — процент использования процессорного времени процессами ядра Linux.
    • ni — процент использования процессорного времени программами с измененным приоритетом.
    • id — простой процессора.
  • Четвертая строка — использование оперативной памяти.
    • total — общее количество оперативной памяти.
    • used — количество использованной оперативной памяти.
    • free — количество свободной оперативной памяти.
  • Пятая строка — использование swap-пространства.
    • total — общее количество swap-пространства.
    • used — количество использованного swap-пространства.
    • free — количество свободного swap-пространства.

В списке процессов по умолчанию показаны следующие столбцы:

  • PID — PID процесса.
  • USER — пользователь, с правами которого выполняется процесс.
  • PR — приоритет процесса.
  • NI — на сколько больше или меньше процесс «нравится» (от слова nice) системе. То есть на сколько был изменен приоритет процесса.
  • VIRT — общее количество виртуальной памяти, используемой программой. Значение в килобайтах.
  • RES — количество резидентной (не перемещаемой в swap) памяти в килобайтах.
  • SHR — количество разделяемой (shared) памяти программы в килобайтах.
  • S — состояние процесса:
    • D — uninterruptible sleep.
    • R — процесс выполняется процессором или стоит в очереди на выполнение.
    • S — процесс ожидает событие ввода-вывода.
    • T — выполнение процесса приостановлено.
    • Z — состояние «зомби».

Команды

Теперь рассмотрим, какие команды поддерживает top.

Команда Описание
А Переключает количество одновременно выводимых на экран окон. По умолчанию показано одно окно.
d или s Устанавливает значение задержки перерисовки экрана. Значение по умолчанию 3 секунды.
l Включение/выключение поля «средняя загрузка системы» в заголовке.
t Включение/выключение полей описания процессов и загрузки процессора в заголовке.
m Включение/выключение полей, описывающих использование оперативной памяти и файла подкачки.
b Выделение процессов, выполняемых процессором (состояние Run).
c Включает/выключает отображение имени программы/полной командной строки в поле COMMAND.
i Включает отображение только процессов, выполняемым процессором, или всех процессов системы.
x Включает/выключает подсветку колонки, по которой происходит сортировка процессов.
z Включает/выключает цвет.
Пробел Заставляет программу перечитать список процессов.
u Показывает процессы, выполняемые определенным пользователем.
k Послать сигнал процессу.
r Изменить значение поля nice (приоритет процесса).

Использовать top в интерактивном режиме достаточно просто. Например, необходимо посмотреть процессы только одного пользователя. Для этого во время работы программы достаточно нажать на клавишу u:

top - 14:42:02 up  2:24,  2 users,  load average: 0.10, 0.22, 0.12
Tasks:  72 total,   4 running,  68 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5% us,  0.0% sy,  0.0% ni, 99.5% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   241372k used,     5460k free,     2444k buffers
Swap:   514072k total,        0k used,   514072k free,    94152k cached
Which user (blank for all): 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      16   0   668  236  200 S  0.0  0.1   0:00.15 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root      10  -5     0    0    0 S  0.0  0.0   0:00.08 events/0
    4 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khelper

В появившейся строке ввести учетную запись интересующего пользователя и нажать Enter.

top - 14:42:02 up  2:24,  2 users,  load average: 0.10, 0.22, 0.12
Tasks:  72 total,   4 running,  68 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.5% us,  0.0% sy,  0.0% ni, 99.5% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   241372k used,     5460k free,     2444k buffers
Swap:   514072k total,        0k used,   514072k free,    94152k cached
Which user (blank for all): user1
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      16   0   668  236  200 S  0.0  0.1   0:00.15 init
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root      10  -5     0    0    0 S  0.0  0.0   0:00.08 events/0
    4 root      10  -5     0    0    0 S  0.0  0.0   0:00.00 khelper
    5 root      17  -5     0    0    0 S  0.0  0.0   0:00.00 kthread

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

top - 14:44:14 up  2:26,  2 users,  load average: 0.19, 0.18, 0.11
Tasks:  74 total,   1 running,  73 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.0% us,  3.0% sy,  0.0% ni, 93.9% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   242836k used,     3996k free,     2572k buffers
Swap:   514072k total,        0k used,   514072k free,    94316k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4357 user1     15   0  3352 1968 1196 S  0.0  0.8   0:00.02 bash
 4809 user1     16   0  4196 1880 1412 S  0.0  0.8   0:00.01 mc
 4811 user1     18   0  3340 1928 1164 S  0.0  0.8   0:00.01 bash

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

Находясь в top, Вы можете послать сигнал интересующему Вас процессу. Например, необходимо завершить работу программы mc, работающей с правами пользователя user1. В top вводим команду k.

top - 14:48:47 up  2:30,  2 users,  load average: 0.00, 0.06, 0.07
Tasks:  74 total,   1 running,  73 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.0% us,  0.7% sy,  0.0% ni, 96.3% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   243096k used,     3736k free,     2992k buffers
Swap:   514072k total,        0k used,   514072k free,    93792k cached
PID to kill:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4357 user1     15   0  3352 1968 1196 S  0.0  0.8   0:00.02 bash
 4809 user1     16   0  4196 1880 1412 S  0.0  0.8   0:00.01 mc
 4811 user1     18   0  3340 1928 1164 S  0.0  0.8   0:00.01 bash

В появившемся приглашении вводим PID процесса.

top - 14:48:47 up  2:30,  2 users,  load average: 0.00, 0.06, 0.07
Tasks:  74 total,   1 running,  73 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.0% us,  0.7% sy,  0.0% ni, 96.3% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   243096k used,     3736k free,     2992k buffers
Swap:   514072k total,        0k used,   514072k free,    93792k cached
PID to kill: 4809
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4357 user1     15   0  3352 1968 1196 S  0.0  0.8   0:00.02 bash
 4809 user1     16   0  4196 1880 1412 S  0.0  0.8   0:00.01 mc
 4811 user1     18   0  3340 1928 1164 S  0.0  0.8   0:00.01 bash

И нажимаем Enter. Появляется предложение указать номер сигнала.

top - 14:48:47 up  2:30,  2 users,  load average: 0.00, 0.06, 0.07
Tasks:  74 total,   1 running,  73 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.0% us,  0.7% sy,  0.0% ni, 96.3% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   243096k used,     3736k free,     2992k buffers
Swap:   514072k total,        0k used,   514072k free,    93792k cached
Kill PID 4809 with signal [15]: 9
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4357 user1     15   0  3352 1968 1196 S  0.0  0.8   0:00.02 bash
 4809 user1     16   0  4196 1880 1412 S  0.0  0.8   0:00.01 mc
 4811 user1     18   0  3340 1928 1164 S  0.0  0.8   0:00.01 bash

Если явно не указать номер, будет послан 15-й сигнал. Поскольку этот сигнал будет проигнорирован программой, пошлем ей сигнал 9. То есть введем число 9 и нажмем Enter.

top - 14:53:40 up  2:35,  2 users,  load average: 0.00, 0.02, 0.05
Tasks:  73 total,   1 running,  72 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.7% us,  0.3% sy,  0.0% ni, 97.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    246832k total,   242068k used,     4764k free,     3216k buffers
Swap:   514072k total,        0k used,   514072k free,    93280k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4357 user1     16   0  3352 1976 1200 S  0.0  0.8   0:00.02 bash

Посылать сигнал программе может только пользователь, с правами которого выполняется программа, или пользователь root.

Batch-режим

Кроме интерактивного режима, в котором top выводит данные на экран, можно использовать так называемый командный режим (Batch mode). Он применяется, когда результаты работы программы необходимо передать другим программам или сохранить в файле.

Для запуска программы в командном режиме используют параметр –b. В этом случае список отсортированных процессов (по умолчанию, процессы сортируются по проценту использования процессорного времени) будет с определенной задержкой (по умолчанию три секунды) выводится на стандартный вывод. Количество повторов не ограничено, поэтому необходимо явно завершать работу программы, например, при помощь комбинации клавиш Ctrl+C.

Рассмотрим некоторые параметры, которые можно применять в командном режиме программы top.

  • –n — количество повторов.
  • –d — задержка между повторами в секундах.
  • –u — определяет пользователя, с правами которого выполняются процессы.
  • –p — определяет PID процессов, за которыми должна следить программа.

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

$ top -b -d 4 -n 3 -u daemon
top - 17:28:22 up 34 min,  1 user,  load average: 0.15, 0.05, 0.03
Tasks:  66 total,   1 running,  65 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.1% us,  0.6% sy,  0.0% ni, 91.7% id,  5.5% wa,  0.1% hi,  0.0% si
Mem:    246832k total,   242968k used,     3864k free,     2708k buffers
Swap:   514072k total,        0k used,   514072k free,   107936k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3753 daemon    16   0  4972 2616 1940 S  0.0  1.1   0:00.01 named
 3787 daemon    16   0  1684  688  584 S  0.0  0.3   0:00.00 atd

top - 17:28:26 up 34 min,  1 user,  load average: 0.13, 0.05, 0.03
Tasks:  66 total,   1 running,  65 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.8% us,  0.0% sy,  0.0% ni, 99.0% id,  0.0% wa,  0.2% hi,  0.0% si
Mem:    246832k total,   242928k used,     3904k free,     2708k buffers
Swap:   514072k total,        0k used,   514072k free,   107936k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 3753 daemon    16   0  4972 2616 1940 S  0.0  1.1   0:00.01 named
 3787 daemon    16   0  1684  688  584 S  0.0  0.3   0:00.00 atd
$