高度なメモリ情報の探索
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_*
この包括的なレポートは、複数の情報源からのデータを組み合わせることで、システムのメモリ状態を詳細に示します。
シンプルなメモリステータスコマンドの作成
最後に、現在のメモリステータスを簡潔な形式で表示するシンプルな 1 行のコマンドを作成しましょう。
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
コマンドの出力から最も重要な情報を抽出し、コンパクトな形式で表示します。