free コマンドは、システムの メモリ(RAM)やスワップ領域の使用状況を表示 するためのコマンドです。
サーバのリソース監視や、メモリ不足による不具合調査に利用されます。とりあえず今すぐ確認したい場合は、次の1行を実行すれば十分です。
free -h
構文(Syntax)
free [オプション]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | メモリ使用状況を KiB 単位で表示 | free |
-b | バイト単位で表示 | free -b |
-k | KiB 単位で表示(デフォルト) | free -k |
-m | MiB 単位で表示 | free -m |
-g | GiB 単位で表示 | free -g |
--tera | TiB 単位で表示 | free --tera |
-h | 読みやすい単位(自動で B/KB/MB/GB 変換) | free -h |
--si | 1000刻み(SI単位)で表示(-hと併用可) | free -h --si |
-t | 合計行を追加表示 | free -t |
-l | low/highメモリの詳細統計も表示 | free -l |
-v | committed(コミット済み)メモリと上限を表示 | free -v |
-s N | N秒ごとに繰り返し表示 | free -s 2 |
-c N | 指定回数だけ繰り返して表示 | free -s 1 -c 3 |
-w | wide 出力(バッファ/キャッシュを分離して表示) | free -w |
-L | 1行にまとめて表示 | free -L |
-V | バージョン情報を表示 | free -V |
出力結果の見方(各列の意味)
free の出力にある各列は以下の意味を持ちます。
- total:搭載されている物理メモリ/スワップの総容量
- used:現在使用中の容量(
buff/cacheを含むため大きめに見える) - free:何にも割り当てられていない、完全に空いている容量
- shared:複数プロセスで共有されている容量(主に tmpfs など)
- buff/cache:ディスクI/Oを高速化するために使われているバッファ・キャッシュ
- available:新しいアプリケーションが実際に使用できるメモリの推定量
メモリの空き具合を判断するときは、free 列ではなく available 列を見てください。Linuxは空きメモリを積極的にディスクキャッシュ(buff/cache)として使う設計のため、free の数値は常に小さく見えます。しかし buff/cache の大部分はアプリケーションが要求すれば即座に解放されるため、実際に使える容量の目安は available です。
実行例
デフォルト表示(KiB単位)
free
出力例:
total used free shared buff/cache available
Mem: 16342300 8500000 1200000 500000 6630000 7200000
Swap: 2097148 10000 2087148
人間に読みやすい形式(-h)
free -h
出力例:
total used free shared buff/cache available
Mem: 15G 8.1G 1.2G 500M 6.3G 7.2G
Swap: 2.0G 10M 2.0G
GiB単位で表示
free -g
合計行を表示
free -t -m
出力例:
total used free shared buff/cache available
Mem: 15966 8352 1172 488 6441 7260
Swap: 2047 10 2037
Total: 18013 8362 3209
committedメモリを表示(-v)
-v を付けると、実メモリの空き状況とは別に「アプリケーションがすでに要求(コミット)しているメモリ量」と「システムが許容できる上限」が確認できます。メモリ不足によるOOM発生の予兆を見たいときに使います。
free -v
出力例:
total used free shared buff/cache available
Mem: 16207892 1323260 14104932 336 1079860 14884632
Swap: 4194300 698916 3495384
Comm: 12298244 6706004 5592240
2秒ごとに更新
free -h -s 2
エラー例(存在しないオプション)
free -x
出力例:
free: invalid option -- 'x'
Try 'free --help' for more information.
メモリ使用率を計算する
free にはメモリ使用率(%)を直接表示するオプションはありません。available を基準に自分で計算する必要があります。
free | awk '/Mem/ { printf "使用率: %.1f%%\n", ($2 - $7) / $2 * 100 }'
used / total ではなく (total - available) / total で計算するのがポイントです。used には解放可能な buff/cache が含まれるため、単純な割り算では実際より高い使用率になってしまいます。計算式の根拠や top ・ /proc/meminfo との使い分けはLinuxでメモリ使用率を確認する方法|freeコマンドの見方と使用率計算を解説で詳しく解説しています。
サーバーが重い・メモリ不足を疑うときの目安
次のような状態が続く場合はメモリ不足を疑います。
availableがtotalの 10〜20% を下回っているSwap行のusedが継続的に増加している- 不要なプロセスを止めても
availableが回復しない
サーバーが遅く感じるときの具体的な切り分け手順はメモリ不足でサーバーが遅い?|freeコマンドでリソース状況を即チェックにまとめています。
関連コマンド
よくある質問
free コマンドとは何をするコマンドですか?
システムの物理メモリ(RAM)とスワップ領域の使用状況を表示するコマンドです。free -h を実行するだけで、合計・使用中・空き・キャッシュ・利用可能な容量が一覧できます。
free と available の違いは何ですか?
free 列は何にも割り当てられていない完全な空き容量、available 列はキャッシュを解放すれば使える分も含めた「実質的に使えるメモリ量」です。空きメモリを判断する際は available を見ます。
free -h と free -m の違いは何ですか?
-m はMiB単位で数値だけを表示し、-h はB/KB/MB/GBのうち読みやすい単位を自動で選んで表示します。日常的な確認では -h の方が数値の桁を数えずに済むため便利です。
メモリ使用率(%)を出すにはどうすればいいですか?
free 自体に使用率を表示するオプションはないため、free | awk '/Mem/ { printf "%.1f%%\n", ($2 - $7) / $2 * 100 }' のように total と available から計算します。
buff/cache が大きいのは問題ですか?
問題ありません。Linuxが空きメモリを有効活用してディスクアクセスを高速化しているだけで、アプリケーションが必要とすれば自動的に解放されます。注意すべきは available が少ない場合や、Swap の使用量が増え続けている場合です。
備考
- 「used」と表示される値は、Linux カーネルのキャッシュ利用分も含むため、実際に使えるメモリは「available」を確認するのが適切です。
sharedは一部のプロセス間で共有されるメモリを示します。- サーバ運用では、
-hと-sを組み合わせて定期的に監視するのが一般的です。
参考
- manページ: man7.org free(1)
- proc(5): /proc/meminfo の仕様

コメント