Linux の du コマンド は、指定したファイルやディレクトリがディスク上でどれくらいの容量を使用しているかを表示するコマンドです。
ディレクトリ配下を再帰的にたどってサイズを集計できるため、「どのディレクトリが容量を食っているか」を調べるときに非常によく使われます。
オプションを指定することで、人間が読みやすい単位(K/M/G)で表示したり、特定の階層までに限定して集計したりといった柔軟な使い方が可能です。
サーバのディスク容量が逼迫してきたときの原因調査で、ほぼ必ず登場するコマンドのひとつです。
du [オプション]... [ファイルまたはディレクトリ]...
引数を省略した場合は、カレントディレクトリ(.)配下のディスク使用量を再帰的に表示します。
複数のパスを指定すると、それぞれの使用量をまとめて確認できます。
・カレントディレクトリ配下のディスク使用量を一覧表示する。
du
カレントディレクトリ(.)以下のディレクトリ・ファイルについて、ブロック数単位のサイズを再帰的に表示します。
そのままだと単位が分かりづらいので、実務では -h オプションと組み合わせることが多いです。
・人間に読みやすい形式(K/M/G)でカレントディレクトリ配下のサイズを表示する。
du -h
-h オプションを付けると、K(KB)、M(MB)、G(GB)などの単位で読みやすく表示してくれます。
ざっくりと使用量を把握したいときに便利です。
・カレントディレクトリ全体の合計サイズだけを表示する。
du -sh
-s オプションは 「合計(summarize)」を意味し、指定したパスごとの合計だけを 1 行で表示します。
-h と組み合わせることで、カレントディレクトリ全体の容量を簡単に確認できます。
・1 階層下のディレクトリごとのサイズを一覧表示する。
du -h --max-depth=1
–max-depth=1 を指定すると、カレントディレクトリ直下のディレクトリについてだけサイズを表示します。
「どのディレクトリが容量を使っているか」を探る第一歩として、よく使うパターンです。
・カレントディレクトリ直下のディレクトリをサイズ順にソートして表示する。
du -h --max-depth=1 | sort -h
du の結果を sort -h にパイプで渡すことで、サイズの小さい順に並べ替えられます。
容量を最も使っているディレクトリを探したいときは、sort -hr(降順)で見るのもおすすめです。
・特定のディレクトリ配下の容量だけを確認する。
du -sh /var/log
/var/log のようにパスを指定すると、そのディレクトリ配下全体の使用量を 1 行で表示します。
ログディレクトリやキャッシュディレクトリの肥大化チェックに便利です。
・ファイル単位のサイズも含めて詳細に表示する。
du -ah /var/www/html
-a オプションを付けると、ディレクトリだけでなくファイルごとのサイズも表示します。
巨大なファイルが紛れていないかを調べたいときに役立ちます。
・同じファイルシステム内だけを対象に容量を集計する。
du -x /
-x オプションは、別ファイルシステムをまたがないように集計するオプションです。
NFS マウントや別パーティションを含めずに、特定のファイルシステムだけの使用量を知りたい場合に使います。
・見かけのサイズ(論理サイズ)を表示する。
du --apparent-size -h largefile
通常の du は「実際にディスク上で消費しているブロック数」でサイズを計算しますが、
–apparent-size を付けるとファイルの論理サイズ(見かけのサイズ)を基準に表示します。
スパースファイルなどを扱うときに違いを意識しておくと良いです。
・各ディレクトリの最終更新日時もあわせて表示する。
du -sh --time /var/log/*
–time を指定すると、「最終更新日時」の列も表示されます。
「最近更新されているログディレクトリだけを重点的に見る」といった用途に便利です。
・ディスクフルになりそうなサーバの原因調査
df -h でファイルシステムごとの残容量を確認し、
使用率が高いパーティションに対して du -h --max-depth=1 でどのディレクトリが容量を食っているかを確認する、という流れは定番です。
・ログや一時ファイルの肥大化チェック
/var/log や /tmp、アプリケーション固有のログディレクトリに対して du を実行し、
定期的にサイズをチェックしておくことで、ログの取り過ぎやローテーション設定ミスに早めに気づけます。
・古いバックアップやリリースディレクトリの整理
バックアップディレクトリやリリース履歴ディレクトリに対して du -sh * を実行し、
容量の大きい世代から削除候補を検討するといった使い方もよくあります。
・容量レポート作成のための元データ収集
du -sh /home/* などでユーザーごとのホームディレクトリサイズを取得し、
容量配分の見直しや課金ベースの参考資料にすることもできます。
| short option | long option | description |
|---|---|---|
| -h | --human-readable | K・M・G など人間が読みやすい単位でサイズを表示する |
| -H | --si | 1000 の倍数(KB/MB/GB)でサイズを表示する(--human-readable は 1024 の倍数) |
| -s | --summarize | 各引数ごとに合計サイズのみを 1 行で表示する(配下の個別ディレクトリは表示しない) |
| -a | --all | ディレクトリだけでなくファイルごとのサイズも表示する |
| -c | --total | 最後に全ての合計サイズを 1 行で追加表示する |
| -d | --max-depth | 指定した深さまでのディレクトリのみを表示する(例: --max-depth=1) |
| -x | --one-file-system | 他のファイルシステムをまたがず、同一ファイルシステム内だけを集計対象にする |
| -L | --dereference | シンボリックリンクをリンク先として追跡し、そのサイズを含めて集計する |
| -k | ブロックサイズを 1K バイトとしてサイズを表示する | |
| -m | ブロックサイズを 1M バイトとしてサイズを表示する | |
| --apparent-size | 実際のブロック数ではなく、ファイルの論理サイズ(見かけのサイズ)を基準に表示する | |
| --time | 各ディレクトリの最終更新日時もあわせて表示する | |
| --help | du コマンドの使い方(ヘルプ)を表示して終了する | |
| --version | du コマンドのバージョン情報を表示して終了する |
ここでは、du コマンドでよく使う主なオプションを TablePress の表にまとめています。
「人間が読みやすい表示」「集計対象の深さ」「ファイルシステムの範囲」などを調整しながら使うのがポイントです。
より詳細なオプションや挙動については、Linux の
du(1) マニュアルページ(英語)
などの公式ドキュメントもあわせて参照してください。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
