du コマンドの使い方|ディスク使用量を確認するオプションと実行例

コマンドリファレンス

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 の違い

dudf はどちらもディスク容量に関するコマンドですが、確認する対象が異なります。

コマンド確認対象主な用途
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 を活用すると階層ごとにディレクトリ容量を素早く把握できます。

参考

Bash玄

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

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

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

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

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

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

Bash玄をフォローする

コメント