Команда top предоставляет сводку по наиболее активным процессам.
eugene@Eugene:~$ top top - 14:39:08 up 7:08, 2 users, load average: 0.27, 0.30, 0.38 Tasks: 465 total, 1 running, 463 sleeping, 0 stopped, 1 zombie %Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 64033.8 total, 57653.0 free, 3746.2 used, 3945.3 buff/cache MiB Swap: 8192.0 total, 8192.0 free, 0.0 used. 60287.6 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2652 eugene 20 0 6562944 336432 134984 S 8.9 0.5 22:49.14 gnome-shell 3858 eugene 20 0 642936 63296 43044 S 4.0 0.1 0:37.70 gnome-term+ 18658 eugene 20 0 1131.7g 271684 113012 S 1.0 0.4 0:34.14 chrome 734 root 0 -20 0 0 0 I 0.7 0.0 1:09.78 kworker/u4+ 12392 eugene 20 0 32.8g 343540 251296 S 0.7 0.5 4:59.16 chrome 12443 eugene 20 0 32.5g 132984 100116 S 0.7 0.2 1:40.38 chrome 302 root 0 -20 0 0 0 I 0.3 0.0 0:02.83 kworker/12+ 307 root 0 -20 0 0 0 I 0.3 0.0 0:02.34 kworker/11+ 471 root 19 -1 58608 23772 22812 S 0.3 0.0 0:06.74 systemd-jo+ 3006 eugene 20 0 420764 27912 17824 S 0.3 0.0 0:04.50 ibus-exten+ 4162 eugene 20 0 1124.1g 217492 135132 S 0.3 0.3 5:29.35 code 6748 root 20 0 546608 109288 32136 S 0.3 0.2 0:02.29 fwupd 12441 eugene 20 0 33.2g 222732 121464 S 0.3 0.3 10:40.91 chrome 18999 root 20 0 0 0 0 I 0.3 0.0 0:03.55 kworker/11+ 19030 root 20 0 0 0 0 I 0.3 0.0 0:00.67 kworker/1:+ 1 root 20 0 169800 12476 8636 S 0.0 0.0 0:02.05 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 slub_flush+ 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:+ 11 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_+ 12 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_+ 13 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_+ 14 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_+
Данная команда автоматически обновляет сводку каждые 5 минут.
Верхние 5 строчек показывают, что делает система. Детально рассмотрим их. Первая строка:
top - 14:39:08 up 7:08, 2 users, load average: 0.27, 0.30, 0.38
Вначале отображается текущее время (в данном примере 14:39:08), за которым следует время работы системы (7 часов и 8 минут) и количество пользователей, подключенных к системе (в сводке выше 2 пользователя).
Далее идет параметр load average
- три числа, которые показывают, насколько загружен компьютер относительно количества процессоров/ядер процессора на компьютере. Они
дают среднее значение за последнюю минуту, последние 5 минут и последние 15 минут. Эти цифры дают представление о среднем количестве процессов, которые ожидали выполнения
за указанный период.
Вторая строка показывает информацию об общем количестве задач и их текущем статусе:
Tasks: 465 total, 1 running, 463 sleeping, 0 stopped, 1 zombie
Здесь отображается общее количество задач - в моем случае 465. Далее отображается информация о состоянии этих задач:
running
: это задачи, которые активно обслуживались во время последнего цикла опроса
sleeping
: это задачи, которые не были активны в последнем цикле опроса.
stopped
: это задачи, которые остановлены нажатием клавиши Ctrl-Z.
zombie
: это задачи, для которых родительский процесс больше недоступен и, следовательно, их нельзя остановить или управлять ими.
Третья строка показывает информацию об использовании процессора:
%Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
Эта информация может дать представление о том, что именно делает ваш компьютер. В многопроцессорной системе отображается сводная информация для всех процессоров/ядер вместе. В частности, здесь перечислены следующие параметры:
us
: объем нагрузки пользовательских процессов. Обычно это задачи, которые выполняются без привилегий root и не имеют прямого доступа к функциям ядра.
sy
: объем нагрузки системных процессов. Обычно это задачи, запущенные с правами root и имеющие прямой доступ к функциям ядра.
ni
: процессы, приоритет которых был настроен с помощью команды nice
.
id
: активность цикла ожидания - процент бездействия в системе
wa
: количество времени, которое система провела в режиме ожидания. Это время, в течение которого система ожидала выполнения операций IO - ввода-вывода (например, операций по чтению или записи на диск).
Если здесь высокое значение, это означает, что на компьютере много задач, связанных с вводом-выводом, и что хранилище компьютера не может эффективно справиться с ними.
Среднее значение выше 30% может указывать на то, что канал ввода-вывода не работает должным образом.
hi
: количество времени, которое компьютер потратил на обработку аппаратных прерываний. Это значение всегда должно быть низким.
Если вы видите здесь высокое значение, это часто указывает на то, что используются плохо функционирующие драйверы.
si
: количество времени, которое система потратила на обработку программных прерываний.
st
: этот параметр применяется к средам, в которых используется виртуализация. Он указывает количество времени, которое было украдено у процессора текущего компьютера
другими виртуальными машинами.
На четвертой строке идут показатели использования памяти:
MiB Mem : 64033.8 total, 57653.0 free, 3746.2 used, 3945.3 buff/cache
Здесь нам отображается следующая информация:
total
: общий объем памяти в мегабайтах, доступный в виде физической установленной оперативной памяти.
free
: объем памяти, который в данный момент ни для чего не используется.
used
: объем памяти, используемый в текущий момент программами и службами.
buff/cache
: объем памяти, используемый для кэширования запросов на чтение и запись. Это память, которую ядро Linux может сделать доступной для других задач в случае необходимости.
Пятая строка показывает аналогичные индикаторы памяти, только для свопа:
MiB Swap: 8192.0 total, 8192.0 free, 0.0 used. 60287.6 avail Mem
Как видно, для свопа выделено 8 Гб и эти 8 Гб никак не используются. А последний показатель указывает на общий объем доступной памяти - этот объем состоит из объема, указанного как free
, а также объема памяти, который может быть немедленно освобожден путем очистки ненужного буфера и кэш-памяти.
В нижней части вывода команды top отображается информация о процессах. Эта информация поделена на несколько столбцов, которые отображаются по умолчанию.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2652 eugene 20 0 6562944 336432 134984 S 8.9 0.5 22:49.14 gnome-shell 3858 eugene 20 0 642936 63296 43044 S 4.0 0.1 0:37.70 gnome-term+ 18658 eugene 20 0 1131.7g 271684 113012 S 1.0 0.4 0:34.14 chrome 734 root 0 -20 0 0 0 I 0.7 0.0 1:09.78 kworker/u4+ ...................................................................................
По умолчанию отображаются следующие столбцы:
PID: идентификатор процесса (PID). Каждый процесс имеет уникальный PID, который можно использовать для управления процессом.
USER: имя пользователя, запустившего процесс.
PR: приоритет процесса. Процессы с более высоким приоритетом (который выражается меньшим числом!) будут обслуживаться раньше процессов с более низким приоритетом. Если процесс с более высоким приоритетом требует процессорного времени, он всегда будет обработан раньше процесса с более низким приоритетом. Некоторые процессы имеют приоритет RT (реального времени), что означает, что они могут получать доступ к системным ресурсам в любое время.
NI: указывает, какой из процессов с одинаковыми приоритетами имеет больший приоритет. Более низкое значение означает более высокий приоритет
VIRT: общий объем памяти, выделенный процессу - запрошенная память. Данное значение не относится к какой-либо физически используемой памяти, а представляет зарезервированный диапазон адресов. Все процессы в Linux могут резервировать виртуальную память из общего адресного пространства в 32 ТБ
RES: объем резидентной памяти - памяти, которая выделена процессу и которая в настоящее время активно используется.
SHARE: обычно это библиотеки, используемые процессом, которые также используются другими процессами.
S: состояние процесса
%CPU: процент циклов процессора, использованных процессом. Стоит отметить, что именно по этому столбцу идет сортировка
%MEM: процент памяти, используемый процессом.
TIME: суммарное реальное время, в течение которого процесс использовал процессор в течение всего периода с момента его запуска.
COMMAND: команда, которая использовалась для запуска этого процесса.
Однако в реальности доступно больше столбцов, чем отображается по умолчанию. Если надо отобразить другие столбцы, то следует нажать клавишу F, находясь на верхнем экране. После этого консоль покажет список всех доступных столбцов, отмеченных *, которые в данный момент активны:
Fields Management for window 1:Def, whose current sort field is %CPU Navigate with Up/Dn, Right selects for move then <Enter> or Left commits, 'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end! * PID = Process PGRP = Process OOMs = OOMEM S RSS = Res Mem * USER = Effecti TTY = Control ENVIRON = Environ PSS = Proport * PR = Priorit TPGID = Tty Pro vMj = Major F PSan = Proport * NI = Nice Va SID = Session vMn = Minor F PSfd = Proport * VIRT = Virtual nTH = Number USED = Res+Swa PSsh = Proport * RES = Residen P = Last Us nsIPC = IPC nam USS = Unique * SHR = Shared TIME = CPU Tim nsMNT = MNT nam ioR = I/O Byt * S = Process SWAP = Swapped nsNET = NET nam ioRop = I/O Rea * %CPU = CPU Usa CODE = Code Si nsPID = PID nam ioW = I/O Byt * %MEM = Memory DATA = Data+St nsUSER = USER na ioWop = I/O Wri * TIME+ = CPU Tim nMaj = Major P nsUTS = UTS nam AGID = Autogro * COMMAND = Command nMin = Minor P LXC = LXC con AGNI = Autogro PPID = Parent nDRT = Dirty P RSan = RES Ano STARTED = Start T UID = Effecti WCHAN = Sleepin RSfd = RES Fil ELAPSED = Elapsed RUID = Real Us Flags = Task Fl RSlk = RES Loc %CUU = CPU Uti RUSER = Real Us CGROUPS = Control RSsh = RES Sha %CUC = Utiliza SUID = Saved U SUPGIDS = Supp Gr CGNAME = Control nsCGROUP = CGRP na SUSER = Saved U SUPGRPS = Supp Gr NU = Last Us nsTIME = TIME na GID = Group I TGID = Thread LOGID = Login U GROUP = Group N OOMa = OOMEM A EXE = Executa
С помощью клавиш Вправо-Влево и Enter можно переключить включение столбца в сводку.
Для выхода из сводки процессов надо нажать q.
Команда top также может принимать дополнительные опции. Отмечу некоторые из них:
-d, --delay =SECS
: устанавливает интервал обновления
-o, --sort-override =FIELD
: устанавливает сортировку по полю FIELD
-p, --pid =PIDLIST
: мониторинг только тех процессов, идентификаторы которых в PIDLIST
-U, --filter-any-user =USER
: фильтрация процессов по пользователю USER
Например, фильтрация процессов по пользователю root:
top -U root