Содержание

top

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

top - интерактивный просмотрщик процессов. htop аналог top.

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

Управляющие клавиши:

Что показывает команда TOP

Расшифровка вывода команды top, например:

top - 10:12:16 up 1 day, 57 min,  3 users,  load average: 0.48, 0.94, 1.19
Tasks: 225 total,   1 running, 224 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.1%us,  0.7%sy,  0.0%ni, 97.9%id,  0.2%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  16466952k total,  6696972k used,  9769980k free,    39484k buffers
Swap: 33554428k total,    45812k used, 33508616k free,  4965696k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ COMMAND
1621 apache    20   0  488m  22m 6088 S  2.0  0.1   1:01.41 httpd
3534 apache    20   0  486m  22m 4916 S  1.7  0.1   1:02.16 httpd
1542 postgres  20   0  156m  612  352 S  0.3  0.0   0:06.92 postmaster
Tasks: 225 total,   1 running, 224 sleeping,   0 stopped,   0 zombie

Данная строка показывает общее количество процессов, сколько из них запущено, сколько находится в спящем режиме, сколько процессов остановлено, а также количество зомби процессов - процессы, которые закончили свое выполнение, имеется ошибка в работе процессов. Столбец S – текущий статус процесса: R – running; S – sleeping, Z – zombie

Cpu(s):  1.1%us,  0.7%sy,  0.0%ni, 97.9%id,  0.2%wa,  0.0%hi,  0.2%si,  0.0%st

Данная строка рассказывает нам о состоянии процессора, на что затрачено 100% процессорного времени.

Mem:  16466952k total,  6696972k used,  9769980k free,    39484k buffers

Эта строка в блок посвященный оперативной памяти. Информация о памяти: total - всего памяти; free - доступно незамедлительно; used - используется в данный момент; buff/cache - сумма буферов и кэша (фактически это можно считать доступной свободной памятью, так как чаще всего эта величина содержит в себе счётчик памяти, требуемой для информации, которая уже записана на диск или скоро будет записана.

Swap: 33554428k total,    45812k used, 33508616k free,  4965696k cached

Информация о свап-памяти: всего, свободно, использовано, доступно.

Также информацию о доступной ОЗУ покажет free.

Загрузка системы (Load average, LA)

Высокие значения показателей load average (LA) говорят о том, что система не справляется с нагрузкой. Если речь идет о целевом сервере, работающем под высокой нагрузкой, то обычно полезно провести тонкую настройку операционной системы (сетевая подсистема, ограничение на количество одновременно открытых файлов и тому подобное). Высокая загрузка также может быть вызвана аппаратными проблемами (выход из строя жесткого диска) или Обнаружение и защита от DDoS-атак.

top - 10:12:16 up 1 day, 57 min,  3 users,  load average: 0.48, 0.94, 1.19

Некоторые интерпретации load average:

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

Приведем простой пример: имеется VPS с двумя ядрами. Значение средней нагрузки: 1.03, 1.11, 1.20 - нормальное значение нагрузки для VPS с 2 ядрами.

1 (единица) LA = 100% нагрузка на 1 ядро CPU. Если на VPS два ядра, то средняя нагрузка может достигать 2 LA:

- LA отображает значения 3.21, 4.22, 5.23 - нагрузка падает, но за последние 15 минут в среднем она была 4.22, что равно 422% нагрузки = 4 из 2 ядер - не норма;

- LA показывает значения 7.15, 5.24, 1.18 - нагрузка увеличивается, и за последние 15 минут она была 1.18, в пределах нормы, что соответствует 118% нагрузки = 1 из 2 ядер - в пределах нормы (пик нагрузки, продолжающийся вплоть до 30 мин, допустим).

Состояния процессов

Состояния процессов

Tasks: 225 total,   1 running, 224 sleeping,   0 stopped,   0 zombie

Состояния процессора (ЦП)

Состояния процессора (ЦП).

Cpu(s):  1.1%us,  0.7%sy,  0.0%ni, 97.9%id,  0.2%wa,  0.0%hi,  0.2%si,  0.0%st

Состояние оперативной памяти (ОЗУ)

Состояние оперативной памяти (ОЗУ). Top показывает, что на компьютере установлено 16GB ОЗУ.

Mem:  16466952k total,  6696972k used,  9769980k free,    39484k buffers
top показывает объем занятой памяти вместе с кэш. htop выдает объём реально занятой памяти без кэша. Для проверки достоверности данных можно использовать утилиту free как правильно смотреть свободное ОЗУ Linux, которая покажет сколько занято памяти с кэш и без.

Состояние Swap

Использование Swap- раздела:

Swap: 33554428k total,    45812k used, 33508616k free,  4965696k cached

Расшифровка столбцов

htop

Homepage: htop

Htop – основанный на ncurses просмотрщик процессов подобный top, htop, atop определение загрузки ОС (Load average, LA), но позволяющий прокручивать список процессов вертикально и горизонтально, чтобы видеть их полные параметры запуска. Управление процессами (остановка, изменение приоритета) может выполняться без ручного ввода их идентификаторов.

Htop экономит одну колонку и показывает в колонке PID(процесс) то, что Использование ps для мониторинга процессов (ps -eLf) показывает в колонке LWP(поток; процесс - контейнер для потоков)

При установки htop на FreeBSD требует смонтированную систему linprocfs, для совместимости с Linux. linprocfs - the Linux process file system, or linprocfs, emulates a subset of Linux' process file system and is required for the complete operation of some Linux binaries.

> man linprocfs
...
> mount -t linprocfs linproc /compat/linux/proc
> df -h
...
linprocfs             4.0K    4.0K      0B   100%    /usr/compat/linux/proc
> cd /usr/ports/sysutils/htop
> make install clean

Скрипт для монтирования linprocfs при загрузки FreeBSD:

> ee /usr/local/etc/rc.d/0start.sh
#! /bin/sh
 
#for htop
/sbin/mount -t linprocfs linproc /compat/linux/proc

Или прописать в fstab строку и для проверки примонтировать командой mount linproc

linproc                 /usr/compat/linux/proc  linprocfs rw    0       0

atop

Домашняя страницаatop. Atop - это ASCII полноэкранный монитор производительности для Linux, который способен сообщать об активности всех процессов (даже если процессы завершились во время интервала), ежедневно записывать в журнал активность системы и процессов для долгосрочного анализа, выделять перегруженные системные ресурсы с помощью цветов и т.д. Через регулярные интервалы времени он показывает активность на уровне системы, связанную с процессором, памятью, подкачкой, дисками (включая LVM) и сетевым уровнем, и для каждого процесса (и потока) показывает, например, использование процессора, рост памяти, использование диска, приоритет, имя пользователя, состояние и код завершения.

В сочетании с дополнительным модулем ядра netatop, он даже показывает сетевую активность для каждого процесса/потока.

CentOS:
yum install atop
 
Daebian: Ubuntu
apt install atop

автозапуск

systemctl enable atop

запуск

systemctl start atop

Конфигурационный файл /etc/default/atop считается устаревшим в некоторых системах, если это так изучайте /usr/share/atop/atop.daily

Запуск

atop

Команда atop имеет несколько основных преимуществ по сравнению с другими инструментами мониторинга производительности:

Как пользоваться atop

Команда atopsar — это встроенный анализатор логов atop, который позволит быстро найти проблему и смотреть лог в нужное вам время.

Основные ключи:

Общая нагрузка:

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

Если вам этого недостаточно, можно посмотреть полный снимок нагрузки на сервер командой: atop -r путь до лога, можно сразу указать временные рамки.

Например: Общий вывод

atop -r /var/log/atop/atop_20220606 -b 21:26:59 -e 23:26:59

Нагрузка на диски:

atop -r /var/log/atop/atop_20220606 -d -b 21:26:59 -e 23:26:59

Откроется тот же atop, в котором видна вся нагрузка на сервере, где можно выставлять сортировку по процессам, но за только на нужное время. Чтобы открыть следующий снимок нагрузки, нажмите t, предыдущий снимок — T. Время снимка указано в первой строке посередине экрана.

Заключение

Существует ряд аналогичных программ, например bashtop.