Linux proporciona información de memoria más detallada de lo que muestra el comando básico free
. En este paso, explorará fuentes adicionales de información de memoria y creará un resumen completo de la memoria.
Exploración de /proc/meminfo
El archivo /proc/meminfo
contiene información detallada de memoria sobre su sistema. Examinémoslo:
head -20 /proc/meminfo
Este archivo contiene docenas de valores relacionados con la memoria, incluyendo:
MemTotal
: RAM total utilizable
MemFree
: Memoria libre
MemAvailable
: Memoria disponible
Buffers
: Memoria utilizada por los buffers del kernel
Cached
: Memoria utilizada para el caché de archivos
SwapTotal
: Espacio total de intercambio (swap)
SwapFree
: Espacio libre de intercambio (swap)
Extraigamos alguna información clave de este archivo:
grep -E "MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree" /proc/meminfo > ~/project/memory_data/meminfo_excerpt.txt
Veamos la información extraída:
cat ~/project/memory_data/meminfo_excerpt.txt
Creación de un resumen completo de memoria
Ahora, creemos un script que genere un informe resumen completo de la memoria. Creemos un nuevo archivo de script:
nano ~/project/memory_data/create_summary.sh
Agreguemos el siguiente contenido:
#!/bin/bash
## Establece el archivo de salida con la marca de tiempo
output_file=~/project/memory_data/memory_summary_$(date +%Y%m%d_%H%M%S).txt
## Crea el encabezado
echo "INFORME RESUMEN DE MEMORIA DE LINUX" > $output_file
echo "===========================" >> $output_file
echo "Fecha: $(date)" >> $output_file
echo "" >> $output_file
## Estadísticas básicas de memoria
echo "ESTADÍSTICAS BÁSICAS DE MEMORIA:" >> $output_file
free -h >> $output_file
echo "" >> $output_file
## Información detallada de memoria
echo "INFORMACIÓN DETALLADA DE MEMORIA:" >> $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
## Información de intercambio (swap)
echo "INFORMACIÓN DE INTERCAMBIO (SWAP):" >> $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
## Cálculo del porcentaje de uso de memoria
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 "RESUMEN DE USO DE MEMORIA:" >> $output_file
echo "Porcentaje de uso de memoria: ${mem_percentage}%" >> $output_file
echo "" >> $output_file
echo "Informe resumen de memoria generado en $output_file"
Guarde el archivo presionando Ctrl+O
, luego Enter
, y salga con Ctrl+X
.
Haga el script ejecutable:
chmod +x ~/project/memory_data/create_summary.sh
Ejecute el script para generar el informe resumen:
~/project/memory_data/create_summary.sh
Después de que el script se complete, vea el informe resumen generado:
cat ~/project/memory_data/memory_summary_*
Este informe completo le ofrece una vista detallada del estado de la memoria de su sistema al combinar datos de múltiples fuentes.
Creación de un comando simple de estado de memoria
Finalmente, creemos un comando simple de una sola línea que muestre el estado actual de la memoria en un formato conciso:
echo "Memory status: $(free -h | grep Mem | awk '{print "Total:"$2, "Used:"$3, "Free:"$4, "Available:"$7}')" > ~/project/memory_data/memory_status.txt
Veamos el estado de la memoria:
cat ~/project/memory_data/memory_status.txt
Este comando extrae la información más importante de la salida del comando free
y la presenta en un formato compacto.