はじめに

こんにちは!今回はfreeコマンドについて学んでいきましょう。

freeは、システムのメモリとスワップ領域の使用状況を表示するコマンドです。「メモリ、あと何GB空いてるんだろう?」って時に超便利。システムが重い時の診断にも欠かせません。

freeコマンドとは

freeコマンドは、メモリ使用量、メモリ空き量、スワップ領域の情報をわかりやすく表示する外部コマンドです。

リアルタイムでシステムメモリの状態を把握できるので、パフォーマンス確認やトラブルシューティングで重宝します。

基本構文

1
free [オプション]

オプションなしで実行すると、メモリとスワップの情報がキロバイト単位で表示されます。

主なオプション

オプション 説明
-h 人間が読みやすい単位表示
-m メガバイト単位で表示
-g ギガバイト単位で表示
-b バイト単位で表示
-s 指定間隔で繰り返し表示
-t 合計行を表示

使用例

例1: 基本的な使い方(デフォルト)

1
free

実行結果:

1
2
3
              total        used        free      shared  buff/cache   available
Mem:       16402312     8354624     4012580      123456     2034108     7954532
Swap:       4194304      204800     3989504

メモリとスワップの情報がキロバイト単位で表示されます。

例2: 人間が読みやすい単位で表示(-hオプション)

1
free -h

実行結果:

1
2
3
              total        used        free      shared  buff/cache   available
Mem:           15Gi       7.9Gi       3.8Gi      117Mi       1.9Gi       7.6Gi
Swap:         4.0Gi       199Mi       3.8Gi

メモリサイズがGi(ギガバイト)単位で表示されます。これが最も見やすい!

例3: メガバイト単位で表示(-mオプション)

1
free -m

実行結果:

1
2
3
              total        used        free      shared  buff/cache   available
Mem:          16001        8169        3918         121        1987        7773
Swap:          4096         199        3897

メモリサイズがMB(メガバイト)単位で表示されます。

例4: ギガバイト単位で表示(-gオプション)

1
free -g

実行結果:

1
2
3
              total        used        free      shared  buff/cache   available
Mem:             15           7           3           0           1           7
Swap:             4           0           3

メモリサイズがGB(ギガバイト)単位で表示されます。

例5: 合計行を表示(-tオプション)

1
free -ht

実行結果:

1
2
3
4
              total        used        free      shared  buff/cache   available
Mem:           15Gi       7.9Gi       3.8Gi      117Mi       1.9Gi       7.6Gi
Swap:         4.0Gi       199Mi       3.8Gi
Total:         19Gi       8.0Gi       7.6Gi

メモリとスワップの合計が表示されます。

例6: 1秒間隔で繰り返し表示(-sオプション)

1
free -h -s 1

実行結果:

1
2
3
4
5
6
7
8
9
              total        used        free      shared  buff/cache   available
Mem:           15Gi       7.9Gi       3.8Gi      117Mi       1.9Gi       7.6Gi
Swap:         4.0Gi       199Mi       3.8Gi

(1秒後に再表示)

              total        used        free      shared  buff/cache   available
Mem:           15Gi       7.9Gi       3.7Gi      117Mi       2.0Gi       7.6Gi
Swap:         4.0Gi       199Mi       3.8Gi

指定した間隔でメモリ情報が更新されます。

例7: バイト単位で表示(-bオプション)

1
free -b

実行結果:

1
2
3
              total          used          free        shared     buff/cache       available
Mem:    16778215424    8757149696    4107182080     128974848    1913883648    8157970432
Swap:    4294967296     209715200    4085252096

バイト単位で正確な値が表示されます。

例8: 複数回表示して変化を確認

1
free -h -s 2 -c 5

実行結果:

1
2秒間隔で5回メモリ情報が表示されます

メモリの変化をリアルタイムで監視できます。

Tips・注意点

メモリ情報の読み方

各列の意味:

  • total: 物理メモリ総量
  • used: 使用中のメモリ
  • free: 全く使用されていないメモリ
  • shared: 複数プロセスで共有されているメモリ
  • buff/cache: バッファ・キャッシュに使用されているメモリ
  • available: 利用可能なメモリ(重要!)

available列が大切

1
free -h

available列がメモリが十分か判断する重要な指標。バッファ・キャッシュは必要に応じて解放されます。

スワップが増えすぎていないか確認

1
free -h | grep Swap

Swap使用量が多いと、システムが遅くなります。

キャッシュのクリア

1
2
# バッファ・キャッシュをクリア(要root権限)
sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'

キャッシュをクリアしてメモリを解放できます。

実践的な使い方

メモリリークの監視

1
free -h -s 5 -c 12

5秒間隔で12回表示して、メモリが増え続けないか確認。

スクリプトでメモリ使用率をチェック

1
2
3
4
AVAILABLE=$(free -h | grep Mem | awk '{print $7}' | sed 's/Gi//')
if (( $(echo "$AVAILABLE < 2" | bc -l) )); then
  echo "警告: メモリが逼迫しています"
fi

利用可能メモリが2GB以下なら警告を出す。

メモリ使用率を計算

1
free -h | grep Mem | awk '{print "使用率: " ($3/$2)*100 "%"}'

メモリ使用率をパーセンテージで表示。

定期的なメモリ監視ログ

1
echo "$(date): $(free -h | grep Mem)" >> memory_monitor.log

メモリ使用状況をログファイルに記録。

まとめ

freeコマンドのポイント:

  • メモリとスワップ領域の使用状況を表示する外部コマンド
  • -hで人間が読みやすい単位で表示(最もよく使われる)
  • -m, -gで指定単位で表示
  • -tで合計情報を追加表示
  • -sで指定間隔で繰り返し表示
  • available列がメモリ余裕の判断基準
  • システムパフォーマンス診断に必須

freeコマンドは、システムの健康状態を一瞬で判断できる重要なツール。定期的にメモリ状況をチェックして、快適なシステム運用を心がけましょう!