====== Про команду top ====== Источник - http://bulkin.me/notes/661 С командой top придется столкнуться, наверно, всем, кто постигает азы администрирования линуксом. При вводе в консоли команды top, на экран выводится информативная таблица, которая обновляется каждые 2 секунды (по умолчанию, процессы сортируются по проценту использования процессорного времени). Ниже приводится описание столбцов, для чего они нужны и что показывают. * **PID** (process ID) — идентификатор процесса. * **USER** — пользователь, от которого запущен данный процесс (root – суперпользователь). * **PR** — текущий приоритет процесса. Чем меньше цифра, тем выше приоритет. * **NI** — приоритет, который можно выставить командой nice. Может быть от −20 (наивысший приоритет) до 19. * **VIRT** — общее количество виртуальной памяти, используемой программой (в килобайтах). * **RES** — текущее использование оперативной памяти. * **SHR** — количество разделяемой (shared) памяти программы (в килобайтах). * **S**— состояние процесса. Может быть: * **D** — состояние ожидания; * **R** — процесс выполняется процессором или стоит в очереди на выполнение; * **S** — состояние «сна»; * **T** — выполнение процесса приостановлено; * **Z** — состояние «зомби». * **%CPU** — процент доступного времени процессора, которое использовала запущенная программа. * **%MEM** — процент доступной памяти, которое использовала запущенная программа. * **COMMAND** — название команды, под которой работает процесс. Также, если быть внимательным, можно увидеть, что вверху таблицы есть заголовок, который содержит еще одну очень полезную информацию: * Загрузка системы (первая строка): * текущее время; * **up time** — время работы системы после включения питания; * **user** — количество пользователей, которые в данный момент работают в системе; * **load average** — средняя загрузка системы (минута, пять минут и пятнадцать минут назад). * Процессы (вторая строка): * **total** — общее количество процессов в системе; * **running** — количество процессов, выполняемых процессором или стоящих в очереди на выполнение; * **sleeping** — количество процессов, ожидающих какого-либо события ввода-вывода; * **stoped** — количество приостановленных процессов; * **zombie** — количество процессов, находящихся в состоянии «зомби». * Состояние процессора (третья строка): * **us** — процент использования процессорного времени программами пользователей; * **sy** — процент использования процессорного времени процессами ядра Linux; * **ni** — процент использования процессорного времени программами с измененным приоритетом; * **id** — простой процессора; * **hi** — процент времени, которое процессор тратит на обработку прерываний на уровне железа (IRQ); * **si** — то же, что и **hi**, только для софт-прерываний; * **st** — процент «уворованного» времени. * Использование оперативной памяти (четвертая строка): * **total** — общее количество оперативной памяти; * **used** — количество использованной оперативной памяти; * **free** — количество свободной оперативной памяти. * Использование swap-пространства (пятая строка): * **total** — общее количество swap-пространства; * **used** — количество использованного swap-пространства; * **free** — количество свободного swap-пространства. * Управлять top'ом можно, используя следующие команды: * **a** — переключить количество одновременно выводимых на экран окон (по умолчанию показывается одно окно); * **d** или **s** — установить значение задержки перерисовки экрана (по умолчанию 3 секунды); * **l** — включение/выключение поля «средняя загрузка системы» в заголовке; * **t** — включение/выключение полей описания процессов и загрузки процессора в заголовке; * **m** — включение/выключение полей, описывающих использование оперативной памяти и файла подкачки;. * **b** — включение процессов, выполняемых процессором (состояние Run); * **c** — включение/выключает отображение имени программы/полной командной строки в поле COMMAND; * **i** — включение отображение только процессов, выполняемым процессором, или всех процессов системы; * **x** — включение/выключает подсветку колонки, по которой происходит сортировка процессов; * **z** — включение/выключает цвет; * **u** — показать процессы, выполняемые определенным пользователем; * **k** — послать сигнал процессу; * **r** — изменить значение поля nice (приоритет процесса); * **Пробел** — заставить программу перечитать список процессов (т.е. обновить экран). ---- ==== Отличие между VIRT, RES и SHR столбцами ==== [[http://profhelp.com.ua/content/%D0%BE%D1%82%D0%BB%D0%B8%D1%87%D0%B8%D0%B5-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-virt-res-%D0%B8-shr-%D0%B2-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B-top|http://profhelp.com.ua/content/отличие-между-virt-res-и-shr-в-выводе-комманды-top]] **VIRT Virtual Image** - виртуальный размер процесса. Общее количество памяти, которое способна адресовать программа в данный момент времени. VIRT = DATA + CODE + SWAP + SHR Также включает в себя страницы, которые были выделены системой, но не использованы. **RES - Resident size**. Показывает сколько физической памяти использует процесс. (Соответствует колонке %MEM.) Это значение, будет меньше значения VIRT, так как большинство программ зависят от разделяемой Си библиотеки (C library). ** SHR - Shared Mem size**. Количество разделяемой памяти, которое используется процессом. Отображает количество памяти, которая потенциально может быть разделена с другими процессами. Shared, отображает какое количество от размера VIRT фактически разделено (памятью или библиотеками). В случае с библиотеками, это не обязательно означает, что вся библиотека резидентная. Например, если программа использует только некоторые функций библиотеки, вся библиотека будет отображаться в памяти и будет считаться в VIRT и SHR, но только части библиотеки, содержащие функции, которые используются будут загружены и считаться в RES. **SWAP - Swapped size**. Память, которая не является резидентной, но доступна в текущем процессе. Это память, которая выгружена в SWAP, но может содержать дополнительную нерезидентную память. SWAP = VIRT - RES **DATA -Data+Stack size**. Количество виртуальной памяти, отведенное под код, который не является исполняемым. **CODE - Code size**. Количество виртуальной памяти, отведенное под исполняемый код