du コマンドとは
du(disk usage)コマンドは、ファイルやディレクトリが どれだけディスク容量を消費しているか を表示するLinux/Unixの標準コマンドです。
「どのディレクトリが容量を圧迫しているのか特定したい」「大きなファイルを探したい」といった場面で使われ、ディスク容量不足のトラブルシューティングに欠かせません。
ファイルシステム全体の空き容量を確認したい場合は df コマンドを使います。du と df の違いは後述の「du と df の違い」で解説します。
構文(Syntax)
du [オプション] [FILE...]
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | ディレクトリごとの容量をブロック単位で表示 | du /var/log |
-h | 人間が読みやすい形式(KB, MB, GB)で表示 | du -h /var/log |
-s | 指定したディレクトリやファイルの合計のみ表示 | du -sh /var/log |
-a | ファイル単位でも容量を表示 | du -ah /var/log |
-c | 合計値を表示 | du -ch /var/log |
--max-depth=N | 指定階層まで表示 | du -h --max-depth=1 /var/log |
-d N | --max-depth=N と同じ(GNU拡張) | du -h -d 2 /var/log |
-x | 他のファイルシステムをまたがない | du -x / |
du と df の違い
du と df はどちらもディスク容量に関するコマンドですが、確認する対象が異なります。
| コマンド | 確認対象 | 主な用途 |
|---|---|---|
du | ファイル・ディレクトリ単位 | 「どのファイルやディレクトリが容量を使っているか」を調べる |
df | ファイルシステム(パーティション)単位 | 「ディスク全体の空き容量がどのくらいか」を確認する |
典型的な使い方としては、まず df -h でディスク全体の空き容量を確認し、空きが少ない場合に du で原因となっているディレクトリやファイルを特定します。
実行例
ディレクトリの容量を表示
du /var/log
出力例:
4 /var/log/apt
12 /var/log/journal
200 /var/log
人間が読みやすい形式で表示
du -h /var/log
出力例:
4.0K /var/log/apt
12K /var/log/journal
200K /var/log
ディレクトリ全体の合計のみ表示
du -sh /var/log
出力例:
200K /var/log
階層1までのディレクトリ容量を表示
du -h --max-depth=1 /home
出力例:
1.2G /home/alice
800M /home/bob
2.0G /home
ファイルごとの容量も表示
du -ah /var/log
複数ディレクトリの合計を表示
du -ch /var/log /etc
出力例:
200K /var/log
20K /etc
220K total
エラー例(存在しないディレクトリ)
du missing_dir
出力例:
du: cannot access 'missing_dir': No such file or directory
容量確認の実務例
ディスクがひっ迫したときの調査手順
まず df -h でどのファイルシステムが逼迫しているか確認し、次に du で原因を特定します。
# ① 全体の空き容量を確認
df -h
# ② 容量が多いディレクトリを 1 階層ずつ絞り込む
du -h --max-depth=1 /
du -h --max-depth=1 /var
du -h --max-depth=1 /var/log
サイズの大きいディレクトリ TOP 10 を表示
du -h --max-depth=1 /home | sort -rh | head -10
出力例:
3.5G /home
2.1G /home/alice
900M /home/bob
400M /home/charlie
指定サイズ以上のファイルを検索
# 100MB 以上のファイルを検索して容量順に表示
find /var -size +100M -exec du -sh {} \; 2>/dev/null | sort -rh
条件を指定したファイル検索については find コマンド、出力の並び替えについては sort コマンドの記事もあわせて参照してください。
ログディレクトリの容量を確認
# /var/log 配下のディレクトリを容量順に表示
du -sh /var/log/* 2>/dev/null | sort -rh | head -10
よくある質問
du -sh とは何ですか?
-s(summarize、合計のみ表示)と -h(human-readable、読みやすい単位で表示)を組み合わせたオプションです。指定したディレクトリの合計容量だけを KB / MB / GB 単位で簡潔に表示するため、実務では最もよく使われる組み合わせです。
du –max-depth の使い方は?
--max-depth=N(短縮形は -d N)で、表示する階層の深さを指定します。--max-depth=1 を指定するとディレクトリ直下だけを表示し、出力が長くなりすぎるのを防げます。
du の結果を GB 単位で表示するには?
-h オプションを使うと自動的に KB / MB / GB の適切な単位で表示されます。GB 単位に固定したい場合は du -BG または du --block-size=1G を指定します。
du の実行が遅いときはどうすればよいですか?
du はディレクトリを再帰的に走査して合計するため、ファイル数が多いディレクトリでは時間がかかります。--max-depth で階層を絞る、調査対象のディレクトリを絞り込むといった方法で高速化できます。
du と df の結果が一致しないのはなぜですか?
削除済みファイルをプロセスがファイルディスクリプタとして掴んだままだと df の値が減らない、別のファイルシステムをマウントしている場合は du の集計に含まれないなど、複数の要因が考えられます。詳しくは前述の「du と df の違い」を参照してください。
関連コマンド
df: ファイルシステムごとのディスク使用量を表示ls -lh: ファイルサイズを確認find: 条件を指定してファイルを検索sort: du の出力をサイズ順に並び替えncdu: 対話的にディスク使用量を確認できるツール(インストールが必要)
備考
duはファイルシステムのブロック数を基準にしているため、実際のファイルサイズと異なる場合があります。-hオプションは人間にわかりやすい形式を出力するため、日常的に利用されます。--max-depthを活用すると階層ごとにディレクトリ容量を素早く把握できます。
参考
- manページ: man7.org du(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント