探索高级内存信息
Linux 提供的内存信息比基本的 free
命令显示的内容更详细。在这一步中,你将探索其他内存信息来源,并创建一份全面的内存摘要。
探索 /proc/meminfo
/proc/meminfo
文件包含了系统的详细内存信息。让我们来查看一下:
head -20 /proc/meminfo
这个文件包含了数十个与内存相关的值,其中包括:
MemTotal
:可用的总 RAM
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
## Set output file with timestamp
output_file=~/project/memory_data/memory_summary_$(date +%Y%m%d_%H%M%S).txt
## Create header
echo "LINUX MEMORY SUMMARY REPORT" > $output_file
echo "===========================" >> $output_file
echo "Date: $(date)" >> $output_file
echo "" >> $output_file
## Basic memory statistics
echo "BASIC MEMORY STATISTICS:" >> $output_file
free -h >> $output_file
echo "" >> $output_file
## Detailed memory information
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
## Swap information
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
## Memory usage percentage calculation
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
命令的输出中提取最重要的信息,并以紧凑的格式呈现。