Введение
Мониторинг системных процессов является важным навыком для пользователей Linux и системных администраторов. Понимание того, какие процессы запущены и как они используют ресурсы, позволяет вам поддерживать стабильность и производительность системы.
В этом практическом занятии (лабораторной работе) вы научитесь использовать команду top, которая является мощным инструментом для мониторинга процессов Linux в реальном времени. Команда top предоставляет подробную информацию о использовании ЦП, потреблении памяти и других важных системных показателях. Освоив эту важную команду, вы сможете определить ресурсоемкие процессы и эффективно управлять ресурсами своей системы Linux.
Введение в команду top
Команда top представляет собой фундаментальную утилиту Linux, которая отображает динамическое, реальное представление о процессах, запущенных на вашей системе. Название "top" связано с ее поведением по умолчанию, которое заключается в отображении "самых активных" (по потреблению ЦП) процессов.
Начнем с перехода в каталог вашего проекта и рассмотрим базовое использование команды top:
cd ~/project
Теперь запустим команду top:
top
При выполнении этой команды вы должны увидеть интерактивный экран, похожий на следующий:
top - 14:25:30 up 2 days, 3:45, 1 user, load average: 0.15, 0.20, 0.25
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 4096.0 total, 2841.3 free, 845.2 used, 409.5 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 2970.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 labex 20 0 562340 42340 28456 S 2.0 1.0 0:30.25 firefox
2345 labex 20 0 78912 23456 13204 S 0.7 0.6 0:12.34 terminal
3456 root 20 0 43528 5424 4356 S 0.3 0.1 0:05.67 sshd
... (more processes)
Экран top состоит из двух основных разделов:
Общая информация (первые 5 строк): Предоставляет системную информацию, включая:
- Время работы системы и средние нагрузки
- Статистика по задачам (всего, запущенных, спящих и т.д.)
- Процентное использование ЦП
- Использование памяти (ОЗУ и своп)
Список процессов (таблица под общей информацией): Содержит список запущенных процессов с деталями, такими как:
- PID: Идентификатор процесса
- USER: Владелец процесса
- PR: Приоритет
- NI: Nice-значение
- VIRT: Используемая виртуальная память
- RES: Используемая физическая память
- %CPU: Процентное использование ЦП
- %MEM: Процентное использование памяти
- COMMAND: Имя команды
По умолчанию экран автоматически обновляется каждые 3 секунды. Чтобы выйти из команды top, просто нажмите клавишу q.
Теперь сделаем статическую снимку процессов с использованием опции -n 1. Эта опция сообщает top обновиться только один раз и затем завершиться:
top -n 1 > ~/project/top_snapshot.txt
Эта команда создает файл с именем top_snapshot.txt в каталоге вашего проекта, содержащий снимок текущих системных процессов. Проверим содержимое файла:
cat ~/project/top_snapshot.txt
Вы должны увидеть вывод, похожий на то, что отображалось в интерактивной сессии top, но в виде статического текстового файла.
Интерпретация вывода команды top
Теперь, когда у вас есть снимок системных процессов, давайте проанализируем полученную информацию, чтобы понять, что она говорит нам о использовании ресурсов системы.
Откройте файл top_snapshot.txt с помощью текстового редактора nano:
nano ~/project/top_snapshot.txt
В этом файле вы увидите ту же информацию, которая отображается при использовании интерактивной команды top. Давайте сосредоточимся на определении самого ресурсоемкого по ЦП процесса из списка.
Посмотрите на раздел со списком процессов (под разделом с общими данными) и найдите процесс с наибольшим значением в столбце %CPU. Это указывает на процесс, который потреблял больше всего ЦП в момент снятия снимка.
Например, если вы видите строку следующего вида:
1234 labex 20 0 562340 42340 28456 S 2.0 1.0 0:30.25 firefox
Это показывает, что процесс с PID 1234 (firefox), принадлежащий пользователю "labex", использовал 2,0% ЦП и 1,0% памяти.
Запишите следующую информацию о процессе с наибольшим использованием ЦП:
- PID (идентификатор процесса)
- USER (владелец процесса)
- %CPU (процентное использование ЦП)
- %MEM (процентное использование памяти)
- COMMAND (команда или программа, которая запущена)
Чтобы выйти из nano, нажмите Ctrl+X.
Теперь создайте файл с именем top_analysis.txt, чтобы документировать свои наблюдения:
echo "Most CPU-intensive process analysis" > ~/project/top_analysis.txt
Добавьте детали о самом ресурсоемком по ЦП процессу в файл. Замените заполнители фактическими значениями, которые вы обнаружили:
echo "PID: [Replace with PID]" >> ~/project/top_analysis.txt
echo "USER: [Replace with USER]" >> ~/project/top_analysis.txt
echo "CPU%: [Replace with %CPU]" >> ~/project/top_analysis.txt
echo "MEM%: [Replace with %MEM]" >> ~/project/top_analysis.txt
echo "COMMAND: [Replace with COMMAND]" >> ~/project/top_analysis.txt
Например, если процесс 1234 (firefox) был самым ресурсоемким по ЦП, вы должны ввести:
echo "PID: 1234" >> ~/project/top_analysis.txt
echo "USER: labex" >> ~/project/top_analysis.txt
echo "CPU%: 2.0" >> ~/project/top_analysis.txt
echo "MEM%: 1.0" >> ~/project/top_analysis.txt
echo "COMMAND: firefox" >> ~/project/top_analysis.txt
Давайте проверим, что мы записали в файл:
cat ~/project/top_analysis.txt
В результате должны отобразиться содержимое файла с анализом и детали о самом ресурсоемком по ЦП процессе.
Сортировка и фильтрация процессов в top
Команда top становится еще более мощной, когда вы научитесь сортировать и фильтровать процессы. На этом этапе вы узнаете, как настроить отображение top, чтобы сосредоточиться на определенной информации.
Сначала запустим интерактивную команду top еще раз:
top
Во время работы top вы можете использовать сочетания клавиш для изменения его поведения:
- Нажмите
M(заглавная буква), чтобы отсортировать процессы по использованию памяти. - Нажмите
P(заглавная буква), чтобы отсортировать процессы по использованию ЦП (по умолчанию). - Нажмите
T(заглавная буква), чтобы отсортировать процессы по времени (сколько времени они работают). - Нажмите
N(заглавная буква), чтобы отсортировать процессы по PID (идентификатору процесса).
Попробуйте каждую из этих сортировок, чтобы увидеть, как меняется список процессов. Когда закончите экспериментировать, нажмите q, чтобы выйти из top.
Теперь сделаем снимок процессов, отсортированных по использованию памяти. Мы будем использовать пакетный режим top с определенными параметрами:
top -b -n 1 -o %MEM > ~/project/top_sorted_by_mem.txt
В этой команде используются следующие параметры:
-b: Пакетный режим (неинтерактивный).-n 1: Запустить только один цикл обновления.-o %MEM: Сортировать по использованию памяти.
Проверим содержимое этого файла:
cat ~/project/top_sorted_by_mem.txt
Вы должны увидеть список процессов, отсортированный по использованию памяти, с самыми "жадными" по памяти процессами вверху.
Далее отфильтруем процессы так, чтобы показать только те, которые принадлежат вашему пользовательскому аккаунту:
top -b -n 1 -u labex > ~/project/top_user_filtered.txt
Параметр -u labex фильтрует вывод, показывая только процессы, принадлежащие пользователю "labex". Проверим этот файл:
cat ~/project/top_user_filtered.txt
В этом файле должны быть показаны только процессы, принадлежащие пользователю "labex".
Наконец, объединим сортировку и фильтрацию, чтобы получить более конкретное представление:
top -b -n 1 -u labex -o %CPU > ~/project/top_custom.txt
Эта команда показывает только процессы, принадлежащие пользователю "labex", и сортирует их по использованию ЦП. Проверим результат:
cat ~/project/top_custom.txt
Эти параметры настройки делают top универсальным инструментом для анализа определенных аспектов системной производительности и использования ресурсов.
Резюме
В этом практическом занятии вы научились использовать команду top для мониторинга и анализа процессов в Linux. Вы приобрели следующие навыки:
- Запуск команды
topдля просмотра реального времени отображения системных процессов. - Понимание информации, отображаемой в выводе команды
top, включая использование ЦП, использование памяти и детали процессов. - Создание снимков информации о процессах для анализа.
- Определение ресурсоемких процессов путем анализа использования ЦП и памяти.
- Настройка отображения в
topс помощью опций сортировки и фильтрации.
Эти навыки являются важными для системного администрирования и мониторинга производительности в Linux-окружениях. Команда top является одним из наиболее часто используемых инструментов для быстрой оценки состояния системы и выявления потенциальных проблем с производительностью.
Познав команду top, вы теперь можете эффективно отслеживать системные ресурсы, определять процессы, которые могут вызывать проблемы с производительностью, и собирать информацию, необходимую для оптимизации производительности системы.



