Отчетность о памяти Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Управление памятью является важной частью администрирования системы Linux, которая напрямую влияет на производительность и стабильность системы. Понимание того, как память распределяется, используется и отслеживается в системах Linux, позволяет администраторам оптимизировать производительность, решать проблемы и обеспечивать достаточное количество ресурсов для приложений.

В этом практическом занятии (LabEx) вы научитесь отслеживать и анализировать использование памяти в системах Linux с помощью инструментов командной строки. Вы познакомитесь с командой free, которая предоставляет важную информацию о распределении и использовании системной памяти. Освоив эти инструменты, вы получите навыки, необходимые для эффективного мониторинга системных ресурсов памяти и принятия обоснованных решений по оптимизации системы.

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

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 92%. Он получил 100% положительных отзывов от учащихся.

Использование базовой команды free

Команда free представляет собой фундаментальную утилиту Linux, которая отображает количество свободной и использованной памяти в вашей системе. Эта информация помогает вам понять текущее состояние памяти в системе и определить, достаточно ли у вас ресурсов для запуска приложений.

Запуск базовой команды free

Откройте терминал в рабочем пространстве по умолчанию по адресу /home/labex/project и выполните базовую команду free:

free

Вы должны увидеть вывод, похожий на следующий:

               total        used        free      shared  buff/cache   available
Mem:         8000000     3000000     1000000       25000     4000000     4700000
Swap:             0           0           0

Вывод показывает значения памяти в байтах, что может быть сложно прочитать. Для более удобного формата используйте опцию -h (человекочитаемый формат):

free -h

Теперь вывод будет выглядеть примерно так:

               total        used        free      shared  buff/cache   available
Mem:           7.6Gi       2.9Gi       954Mi        24Mi       3.8Gi       4.5Gi
Swap:             0B          0B          0B

Этот формат отображает размеры памяти с соответствующими единицами измерения (KB, MB, GB), что делает его гораздо легче интерпретировать.

Создание каталога для вашей работы

Создадим каталог для хранения файлов, которые вы будете создавать в рамках этого практического занятия (LabEx):

mkdir -p ~/project/memory_data

Сохранение статистики памяти в файл

Теперь сохраним вывод команды free -h в файл для дальнейшего использования:

free -h > ~/project/memory_data/memory_stats.txt

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

cat ~/project/memory_data/memory_stats.txt

Вы должны увидеть тот же вывод, который был ранее отображен в вашем терминале.

Понимание столбцов вывода информации о памяти

Теперь, когда у вас есть базовая статистика по памяти, давайте разберемся, что означает каждый столбец в выводе команды free. Эти знания помогут вам более эффективно интерпретировать состояние системной памяти.

Объяснение столбцов вывода информации о памяти

Откройте файл со статистикой памяти, который вы создали на предыдущем шаге:

cat ~/project/memory_data/memory_stats.txt

Вывод содержит несколько столбцов:

  1. total: Общее количество памяти (RAM), установленной в системе.

  2. used: Количество памяти, которое в данный момент используется системой.

  3. free: Количество памяти, которая в данный момент не используется ни для чего.

  4. shared: Память, разделяемая несколькими процессами, часто используется tmpfs (временные файловые системы) и сегментами разделяемой памяти.

  5. buff/cache: Память, используемая буферами ядра и кэшем страниц:

    • buffers: Память, используемая ядром для временного хранения данных перед записью на диск.
    • caches: Память, используемая для хранения данных, прочитанных с диска, для более быстрого доступа.
  6. available: Оценка того, сколько памяти доступно для запуска новых приложений без использования свопа.

Создание отчета о памяти

Теперь давайте создадим подробный отчет о памяти, в котором объясним, что означает каждый столбец и запишем текущие значения. Создайте новый файл с именем memory_report.txt:

nano ~/project/memory_data/memory_report.txt

В редакторе nano добавьте следующее содержимое (замените заполнители на фактические значения из вашей системы):

Memory Report - Created on $(date)

total: [Your value here]
The total amount of physical RAM installed on the system.

used: [Your value here]
The amount of memory currently being used by applications and the operating system.

free: [Your value here]
The amount of memory that is completely unused and available.

shared: [Your value here]
Memory used by tmpfs and shared memory segments that can be accessed by multiple processes.

buff/cache: [Your value here]
Memory used for kernel buffers and disk cache to improve system performance.

available: [Your value here]
An estimate of how much memory is available for starting new applications without swapping.

Для получения текущих значений вы можете обратиться к ранее сохраненному файлу memory_stats.txt.

После добавления содержимого сохраните файл, нажав Ctrl+O, а затем Enter, а затем выйдите из nano, нажав Ctrl+X.

Просмотр памяти в разных единицах измерения

Команда free позволяет отображать память в разных единицах измерения. Давайте создадим файл, показывающий память в различных единицах:

free -b | head -2 > ~/project/memory_data/memory_units.txt
echo "Memory in bytes (above)" >> ~/project/memory_data/memory_units.txt
echo "" >> ~/project/memory_data/memory_units.txt

free -k | head -2 >> ~/project/memory_data/memory_units.txt
echo "Memory in kilobytes (above)" >> ~/project/memory_data/memory_units.txt
echo "" >> ~/project/memory_data/memory_units.txt

free -m | head -2 >> ~/project/memory_data/memory_units.txt
echo "Memory in megabytes (above)" >> ~/project/memory_data/memory_units.txt
echo "" >> ~/project/memory_data/memory_units.txt

free -g | head -2 >> ~/project/memory_data/memory_units.txt
echo "Memory in gigabytes (above)" >> ~/project/memory_data/memory_units.txt

Просмотрите файл, чтобы увидеть представление памяти в разных единицах:

cat ~/project/memory_data/memory_units.txt

Это поможет вам понять, как отображать информацию о памяти в наиболее подходящих для ваших нужд единицах измерения.

Мониторинг памяти в реальном времени

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

Использование команды watch с free

Команда watch позволяет периодически запускать другую команду и отображать ее вывод. Это очень полезно для мониторинга использования памяти в реальном времени:

watch -n 2 free -h

Эта команда запускает free -h каждые 2 секунды и показывает обновленный вывод. Вы должны увидеть, как статистика по памяти обновляется в реальном времени.

Для выхода из команды watch нажмите Ctrl+C.

Использование опции интервала с командой free

Самая команда free может отображать использование памяти с регулярными интервалами. Синтаксис выглядит так:

free -s [seconds] -c [count]

Где:

  • -s задает интервал в секундах между обновлениями
  • -c задает количество обновлений для отображения

Давайте отслеживаем использование памяти каждые 3 секунды в общей сложности 4 раза:

free -h -s 3 -c 4

Это отобразит статистику по памяти 4 раза с паузой в 3 секунды между каждым обновлением.

Создание скрипта для мониторинга памяти

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

nano ~/project/memory_data/memory_monitor.sh

Добавьте следующее содержимое в файл:

#!/bin/bash

## Создание файла журнала с текущей датой и временем
log_file=~/project/memory_data/memory_log_$(date +%Y%m%d_%H%M%S).txt

## Запись заголовка в файл журнала
echo "Memory Usage Log - Started at $(date)" > $log_file
echo "Monitoring every 5 seconds for 5 readings" >> $log_file
echo "----------------------------------------" >> $log_file

## Цикл 5 раз, с записью информации о памяти каждые 5 секунд
for i in {1..5}; do
  echo "Reading $i - $(date)" >> $log_file
  free -h >> $log_file
  echo "----------------------------------------" >> $log_file
  sleep 5
done

echo "Monitoring completed at $(date)" >> $log_file
echo "Log saved to $log_file"

Сохраните файл, нажав Ctrl+O, затем Enter, и выйдите, нажав Ctrl+X.

Теперь сделайте скрипт исполняемым:

chmod +x ~/project/memory_data/memory_monitor.sh

Запустите скрипт:

~/project/memory_data/memory_monitor.sh

Скрипт будет работать около 25 секунд (5 секунд × 5 записей) и создаст файл журнала с информацией о использовании памяти. После завершения работы скрипта вы увидите сообщение, указывающее, где сохранен файл журнала.

Для просмотра файла журнала:

cat ~/project/memory_data/memory_log_*

Этот файл журнала показывает, как использование памяти изменяется со временем, что полезно для устранения неполадок, связанных с памятью, или для понимания моделей использования памяти.

Исследование расширенной информации о памяти

В Linux доступна более детальная информация о памяти, чем то, что показывает базовая команда free. На этом шаге вы изучите дополнительные источники информации о памяти и создадите общий сводку по памяти.

Исследование файла /proc/meminfo

Файл /proc/meminfo содержит подробную информацию о памяти вашей системы. Давайте рассмотрим его:

head -20 /proc/meminfo

В этом файле содержится десятки значений, связанных с памятью, в том числе:

  • MemTotal: Общее доступное ОЗУ
  • MemFree: Свободная память
  • MemAvailable: Доступная память
  • Buffers: Память, используемая буферами ядра
  • Cached: Память, используемая для кэширования файлов
  • SwapTotal: Общий размер свопа
  • SwapFree: Свободное место в свопе

Давайте извлечем из этого файла важную информацию:

grep -E "MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree" /proc/meminfo > ~/project/memory_data/meminfo_excerpt.txt

Посмотрим на извлеченную информацию:

cat ~/project/memory_data/meminfo_excerpt.txt

Создание обобщенного сводки по памяти

Теперь давайте создадим скрипт, который сгенерирует общий отчет о состоянии памяти. Создайте новый файл скрипта:

nano ~/project/memory_data/create_summary.sh

Добавьте следующее содержимое:

#!/bin/bash

## Установка имени выходного файла с временной меткой
output_file=~/project/memory_data/memory_summary_$(date +%Y%m%d_%H%M%S).txt

## Создание заголовка
echo "LINUX MEMORY SUMMARY REPORT" > $output_file
echo "===========================" >> $output_file
echo "Date: $(date)" >> $output_file
echo "" >> $output_file

## Базовая статистика по памяти
echo "BASIC MEMORY STATISTICS:" >> $output_file
free -h >> $output_file
echo "" >> $output_file

## Подробная информация о памяти
echo "DETAILED MEMORY INFORMATION:" >> $output_file
echo "Total RAM: $(grep MemTotal /proc/meminfo | awk '{print $2 " " $3}')" >> $output_file
echo "Free RAM: $(grep MemFree /proc/meminfo | awk '{print $2 " " $3}')" >> $output_file
echo "Available RAM: $(grep MemAvailable /proc/meminfo | awk '{print $2 " " $3}')" >> $output_file
echo "Buffer memory: $(grep Buffers /proc/meminfo | awk '{print $2 " " $3}')" >> $output_file
echo "Cache memory: $(grep "^Cached:" /proc/meminfo | awk '{print $2 " " $3}')" >> $output_file
echo "" >> $output_file

## Информация о свопе
echo "SWAP INFORMATION:" >> $output_file
echo "Total Swap: $(grep SwapTotal /proc/meminfo | awk '{print $2 " " $3}')" >> $output_file
echo "Free Swap: $(grep SwapFree /proc/meminfo | awk '{print $2 " " $3}')" >> $output_file
echo "" >> $output_file

## Расчет процента использования памяти
total_mem=$(grep MemTotal /proc/meminfo | awk '{print $2}')
used_mem=$(grep MemTotal /proc/meminfo | awk '{print $2}')
used_mem=$((used_mem - $(grep MemFree /proc/meminfo | awk '{print $2}')))
used_mem=$((used_mem - $(grep Buffers /proc/meminfo | awk '{print $2}')))
used_mem=$((used_mem - $(grep "^Cached:" /proc/meminfo | awk '{print $2}')))
mem_percentage=$((used_mem * 100 / total_mem))

echo "MEMORY USAGE SUMMARY:" >> $output_file
echo "Memory usage percentage: ${mem_percentage}%" >> $output_file
echo "" >> $output_file

echo "Memory summary report generated at $output_file"

Сохраните файл, нажав Ctrl+O, затем Enter, и выйдите, нажав Ctrl+X.

Сделайте скрипт исполняемым:

chmod +x ~/project/memory_data/create_summary.sh

Запустите скрипт для генерации сводного отчета:

~/project/memory_data/create_summary.sh

После завершения работы скрипта посмотрите на сгенерированный сводный отчет:

cat ~/project/memory_data/memory_summary_*

Этот общий отчет дает вам детальное представление о состоянии памяти вашей системы, объединяя данные из нескольких источников.

Создание простой команды для отображения статуса памяти

Наконец, давайте создадим простую однострочную команду, которая показывает текущий статус памяти в компактном формате:

echo "Memory status: $(free -h | grep Mem | awk '{print "Total:"$2, "Used:"$3, "Free:"$4, "Available:"$7}')" > ~/project/memory_data/memory_status.txt

Посмотрите на статус памяти:

cat ~/project/memory_data/memory_status.txt

Эта команда извлекает самую важную информацию из вывода команды free и представляет ее в компактном формате.

Резюме

В этом практическом занятии вы изучили основные методы мониторинга и анализа использования памяти в системах Linux. Вы перешли от базового отображения информации о памяти к более сложному анализу, приобретая ценные навыки для системного администрирования и устранения неполадок.

Основные концепции и навыки, которые вы освоили:

  1. Базовое отображение информации о памяти: Вы использовали команду free для просмотра базовой статистики по памяти и научились интерпретировать столбцы вывода.

  2. Понимание показателей памяти: Вы изучили, что означает каждый показатель памяти (общий объем, используемый, свободный, общий доступ, буфер/кэш, доступный) и как отображать память в разных единицах измерения.

  3. Мониторинг в реальном времени: Вы научились отслеживать использование памяти в реальном времени с помощью команды watch и создали скрипт для записи использования памяти с регулярными интервалами.

  4. Расширенный анализ памяти: Вы исследовали подробную информацию о памяти из файла /proc/meminfo и создали общие сводки по памяти.

Эти навыки являются важными для эффективного системного администрирования, так как управление памятью напрямую влияет на производительность системы. С помощью мониторинга использования памяти вы можете:

  • Определить проблемы с производительностью, связанные с памятью
  • Узнать, нужны ли системе дополнительные ресурсы
  • Понять, как приложения используют память
  • Обнаружить утечки памяти или чрезмерное использование памяти
  • Принимать обоснованные решения по оптимизации системы

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