free コマンドの使い方|オプション一覧と出力の見方を解説

コマンドリファレンス

free コマンドは、システムの メモリ(RAM)やスワップ領域の使用状況を表示 するためのコマンドです。
サーバのリソース監視や、メモリ不足による不具合調査に利用されます。とりあえず今すぐ確認したい場合は、次の1行を実行すれば十分です。

free -h

構文(Syntax)

free [オプション]

主なオプション一覧

オプション説明使用例
(なし)メモリ使用状況を KiB 単位で表示free
-bバイト単位で表示free -b
-kKiB 単位で表示(デフォルト)free -k
-mMiB 単位で表示free -m
-gGiB 単位で表示free -g
--teraTiB 単位で表示free --tera
-h読みやすい単位(自動で B/KB/MB/GB 変換)free -h
--si1000刻み(SI単位)で表示(-hと併用可)free -h --si
-t合計行を追加表示free -t
-llow/highメモリの詳細統計も表示free -l
-vcommitted(コミット済み)メモリと上限を表示free -v
-s NN秒ごとに繰り返し表示free -s 2
-c N指定回数だけ繰り返して表示free -s 1 -c 3
-wwide 出力(バッファ/キャッシュを分離して表示)free -w
-L1行にまとめて表示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コマンドの見方と使用率計算を解説で詳しく解説しています。

サーバーが重い・メモリ不足を疑うときの目安

次のような状態が続く場合はメモリ不足を疑います。

  • availabletotal の 10〜20% を下回っている
  • Swap 行の used が継続的に増加している
  • 不要なプロセスを止めても available が回復しない

サーバーが遅く感じるときの具体的な切り分け手順はメモリ不足でサーバーが遅い?|freeコマンドでリソース状況を即チェックにまとめています。

関連コマンド

  • top : CPU・メモリ使用率を動的に表示
  • htop : top の改良版(見やすいUI)
  • vmstat : 仮想メモリやCPUの統計を表示
  • sar : システムリソース利用状況の収集・表示

よくある質問

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 }' のように totalavailable から計算します。

buff/cache が大きいのは問題ですか?

問題ありません。Linuxが空きメモリを有効活用してディスクアクセスを高速化しているだけで、アプリケーションが必要とすれば自動的に解放されます。注意すべきは available が少ない場合や、Swap の使用量が増え続けている場合です。

備考

  • 「used」と表示される値は、Linux カーネルのキャッシュ利用分も含むため、実際に使えるメモリは「available」を確認するのが適切です。
  • shared は一部のプロセス間で共有されるメモリを示します。
  • サーバ運用では、-h-s を組み合わせて定期的に監視するのが一般的です。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント