Мониторинг процессов в реальном времени
20.12.2021Команда ps отлично подходит для сбора информации о процессах, запущенных в системе, но у нее есть один недостаток. Команда ps может отображать информацию только для определенного момента времени. Если попытаться найти тенденции в процессах, которые часто меняются местами в памяти и из нее, это сложно сделать с помощью команды ps.
Вместо этого команда top может решить эту проблему. Команда top отображает информацию о процессе аналогично команде ps, но делает это в режиме реального времени. Рисунок внизу — это снимок команды top в действии.
Первый раздел вывода показывает общую информацию о системе. Первая строка показывает текущее время, как долго система работала, количество пользователей, вошедших в систему, и средняя нагрузка на систему.
Средняя нагрузка отображается в виде трех чисел: 1-минутная, 5-минутная и 15-минутная средняя нагрузка. Чем выше значения, тем большую нагрузку испытывает система. Нередко значение 1-минутной нагрузки бывает высоким для коротких всплесков активности. Если значение 15-минутной нагрузки велико, ваша система может быть неисправна.
Вторая строка показывает общую информацию о процессах: сколько процессов запущено, спит, остановлено и зомби (завершено, но их родительский процесс не ответил).
Следующая строка показывает общую информацию о процессоре. Дисплей top разбивает использование ЦП на несколько категорий в зависимости от владельца процесса (пользователь или системные процессы) и состояния процессов (запущен, простаивает или ожидает).
После этого идут две строки с подробным описанием состояния системной памяти. В первой строке отображается состояние физической памяти в системе, ее общий объем, объем, используемый в настоящее время, и объем свободной. Вторая строка памяти показывает состояние области подкачки памяти в системе (если она установлена) с той же информацией.
Внизу показан подробный список запущенных в данный момент процессов с некоторыми информационными столбцами, которые должны быть знакомы по выходным данным команды ps:
PID:Идентификатор процесса.
USER:Имя пользователя владельца процесса
PR:Приоритет процесса
NI: nice значение процесса
VIRT: Общий объем виртуальной памяти, используемой процессом.
RES:Объем физической памяти, используемой процессом.
SHR:Объем памяти, которую процесс разделяет с другими процессами.
S: Статус процесса (D = прерывистый сон, R = работает, S = спящий, T = отслеживается или остановлен, или Z = зомби)
%CPU: Доля процессорного времени, которую использует процесс
%MEM:Доля доступной физической памяти, которую использует процесс
TIME+: Общее время ЦП, которое процесс использовал с момента запуска.
COMMAND: Имя процесса в командной строке (программа запущена)
По умолчанию, когда вы запускаете top, он сортирует процессы на основе значения% CPU. Вы можете изменить порядок сортировки, используя одну из нескольких интерактивных команд во время работы top. Каждая интерактивная команда представляет собой отдельный символ, который вы можете нажать во время работы top, что изменяет поведение программы. Нажатие F позволяет выбрать поле для сортировки вывода, а нажатие d позволяет изменить интервал опроса. Нажмите q, чтобы выйти из главного дисплея. У вас есть полный контроль над выводом команды top. Используя этот инструмент, вы часто можете обнаружить вредоносные процессы, которые захватили вашу систему. Конечно, как только вы его найдете, следующая задача — его остановить, что подводит нас к остановке процессов.
Остановка процессов
Важнейшая часть работы системного администратора — это знать, когда и как остановить процесс. Иногда процесс зависает, и ему просто требуется легкий толчок, чтобы либо возобновить работу, либо остановиться.В других случаях процесс идет с CPU и отказывается сдаваться. В обоих случаях вам понадобится команда, которая позволит вам управлять процессом. Linux следует методу межпроцессного взаимодействия Unix.
В Linux процессы взаимодействуют друг с другом с помощью сигналов. Сигнал процесса — это предопределенное сообщение, которое процессы распознают и могут игнорировать или действовать в соответствии с ним. Разработчики программируют, как процесс обрабатывает сигналы. Большинство хорошо написанных приложений имеют возможность получать стандартные сигналы процесса Unix и действовать в соответствии с ними. Эти сигналы показаны в Таблице внизу:
Сигнал | Имя | Описание |
1 | HUP | Задержать |
2 | INT | Прерывать |
3 | QUIT | Выйти |
9 | KILL | Безоговорочно прекратить. |
11 | SEGV | Нарушение сегмента. |
15 | TERM | Прекратить, если возможно. |
17 | STOP | Остановиться, но не прекращать. |
18 | TSTP | Остановить или приостановить, но продолжить работу в фоновом режиме. |
19 | CONT | Возобновить выполнение после STOP или TSTP. |
В Linux доступно несколько различных команд, которые позволяют отправлять сигналы процесса запущенным процессам. Два наиболее распространенных: kill и pkill.
Команда kill
Команда kill позволяет отправлять сигналы процессам на основе их PID. По умолчанию команда kill отправляет сигнал TERM всем PID, перечисленным в командной строке. К сожалению, вместо имени команды можно использовать только PID процесса, что иногда затрудняет использование команды kill.
Чтобы отправить сигнал процесса, вы должны либо быть владельцем процесса, либо войти в систему как пользователь root:
Сигнал TERM сообщает процессу, чтобы он остановился. К сожалению, если у вас запущенный процесс, скорее всего, он проигнорирует запрос. Когда нужно усилить действие, параметр -s позволяет указать другие сигналы (используя либо их имя, либо их номер сигнала).
Как видно из следующего примера, с командой kill не связаны никакие выходные данные.
Чтобы узнать, была ли команда эффективной, нужно будет выполнить другую команду ps или top, чтобы увидеть, остановлен ли вызывающий нарушение процесс.
Команда pkill
Команда pkill — это мощный способ остановить процессы, используя их имена, а не номера PID. Команда pkill также позволяет использовать символы подстановки, что делает ее очень полезным инструментом, когда у вас есть система, которая работает неправильно:
В этом примере будут уничтожены все процессы, которые начинаются с http, например службы httpd для веб-сервера Apache.
Мониторинг дискового пространства
Еще одна важная задача системного администратора — отслеживать использование диска в системе. Независимо от того, используете ли вы Linux в ПК или большой сервер Linux, вам необходимо знать, сколько места у вас есть для ваших приложений.
Монтирование носителя
Файловая система Linux объединяет все медиа-диски в один виртуальный каталог. Прежде чем вы сможете использовать новый медиа-диск в своей системе, вам необходимо поместить его в виртуальный каталог. Эта задача называется монтированием (mounting).
В современном мире графического рабочего стола большинство дистрибутивов Linux имеют возможность автоматически монтировать определенные типы съемных носителей. Съемный носитель — это носитель, который (очевидно) может быть легко удален с ПК, например DVD-диски и карты памяти USB.
Если вы не используете дистрибутив, который автоматически подключает и отключает съемные носители, вам придется сделать это самостоятельно. В этом разделе описаны команды командной строки Linux, которые помогут вам управлять съемными носителями.
Команда монтирования
Как ни странно, команда, используемая для монтирования носителя, называется mount. По умолчанию команда mount отображает список мультимедийных устройств, смонтированных в настоящее время в системе. Однако новая версия ядра монтирует множество виртуальных файловых систем для целей управления, помимо стандартных устройств хранения. Это может сделать вывод команды mount по умолчанию очень загроможденным и запутанным. Если вы знаете тип файловой системы, используемый для разделов вашего диска, вы можете отфильтровать его, используя
Команда mount предоставляет четыре части информации:
- Имя файла устройства носителя.
- Точка монтирования в виртуальном каталоге, где смонтирован носитель.
- Тип файловой системы
- Статус доступа к смонтированному носителю
Последняя запись в предыдущем примере — это USB-накопитель, который рабочий стол GNOME автоматически монтирует в точку монтирования / media / rich / 54A1-7D7D. Тип файловой системы vfat показывает, что она была отформатирована для ПК с Microsoft Windows.
Чтобы вручную смонтировать мультимедийное устройство в виртуальном каталоге, вам необходимо войти в систему как пользователь root или использовать команду sudo для запуска команды как пользователь root. Ниже приводится основная команда для ручного подключения мультимедийного устройства:
mount -t type device directory
Параметр type определяет тип файловой системы, под которой был отформатирован диск. Linux распознает множество типов файловых систем. Если вы используете съемные носители совместно со своими ПК с Windows, вы скорее всего, столкнетесь со следующими типами:
vfat:Файловая система Windows FAT32 с поддержкой длинных имен файлов
ntfs: Расширенная файловая система Windows, используемая в Windows NT и более поздних операционных системах
exfat: Файловая система Windows оптимизирована для съемных носителей
iso9660: Стандартная файловая система CD-ROM и DVD
Большинство USB-накопителей отформатированы с использованием файловой системы vfat. Если вам нужно смонтировать CD или DVD с данными, вам придется использовать файловую систему типа iso9660.
Следующие два параметра определяют местоположение файла устройства для мультимедийного устройства и местоположение в виртуальном каталоге для точки монтирования. Например, чтобы вручную смонтировать USB-накопитель на устройстве / dev / sdb1 в location / media / disk, вы должны использовать следующую команду:
mount -t vfat /dev/sdb1 /media/disk