Исследование расширенной информации о памяти
В 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
и представляет ее в компактном формате.