【2026年7月最新】Linuxコマンド「du」完全ガイド|ディスク使用量確認・全オプション・sort/find組み合わせまで徹底解説

【2026年7月最新】Linuxコマンド「du」完全ガイド|ディスク使用量確認・全オプション・sort/find組み合わせまで徹底解説

「ディスクが満杯で突然サービスが止まった」「ログファイルがいつの間にか数十GBになっていた」——Linuxサーバーを運用していれば、こんな経験が一度はあるはずです。そのトラブルを未然に防ぐための基本コマンドが duコマンド(Disk Usage)です。

duコマンドは、ディレクトリやファイルが実際にどれだけのディスク容量を使っているかを調べるLinuxの標準コマンドです。「どのフォルダが容量を食っているか」を素早く特定できるため、サーバー管理・AIプロジェクトのデータ管理・定期的なストレージ監視まで、あらゆる場面で使われます。

この記事では、duコマンドの基本構文から全オプション・sortやfindとの組み合わせ・Mac(BSD版)とLinux(GNU版)の違い・「Permission denied」エラーへの対処法まで、一つの記事で完全に理解できるよう解説します。さらに後半では、AIツールのClaude Codeを使って「duを実行せずにディスク管理を自動化する」方法もご紹介します。

代表菅澤 代表菅澤
弊社GENAIでは複数のLinuxサーバーを使ってAIツールや自動化システムを動かしています。ディスク管理を怠ると、AIの処理が突然止まったり、バックアップが失敗したりするので、duコマンドは毎週チェックしている必須コマンドです。
AI鬼管理山崎 AI鬼管理山崎
この記事はエンジニアはもちろん、「自社のサーバーがどれだけ容量を使っているか確認したい」という経営者・管理職の方にも分かるよう、専門用語を丁寧に解説しながら進めます。

この記事を読み終わると、次のことが自分でできるようになります。

✔️duコマンドの基本構文と出力の意味を正確に理解できる
✔️用途に応じた適切なオプションを選べるようになる
✔️sortやfindと組み合わせて「容量を食っている犯人」を即座に特定できる
✔️MacとLinuxで挙動が異なる部分を把握しており、環境を問わず使いこなせる
✔️Permission deniedエラーに遭遇しても、正しい対処法で解決できる
✔️Claude Codeを使ってディスク管理を自動化し、手動でduを叩く必要をなくせる
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年7月最新】Linuxコマンド「du」完全ガイド|ディスク使用量確認・全オプション・sort/find組み合わせまで徹底解説
Linuxの「du」コマンドの使い方を完全解説。基本構文から全オプション・sortやfindとの組み合わせ・Mac(BSD)との違い・Permission denied対応まで網羅。AIプロジェクトのサーバー管理にも役立つ実践的な使い方をわかりやすく解説します。

01 duコマンドとは何か――dfとの違いと使いどころ Disk Usage コマンドの基本概念と、混同しやすいdfコマンドとの違いを整理する

まず「duコマンドが何をするコマンドなのか」を明確にしておきましょう。duは Disk Usage(ディスク使用量) の略で、指定したディレクトリやファイルが現在どれだけのディスクスペースを使用しているかを表示するコマンドです。1970年代のUNIXから存在する歴史の長いコマンドで、現代のLinux・Mac・BSD系のOSに標準搭載されています。

📚 用語解説

duコマンド:Disk Usageの略。指定したディレクトリやファイルのディスク使用量を再帰的に表示するLinux/Unixの標準コマンド。「そのフォルダが合計で何バイト使っているか」を調べるのに使います。

1-1. dfコマンドとの違い――「パーティション全体」vs「フォルダ単位」

duと混同されやすいコマンドに dfコマンド(Disk Free)があります。この2つはどちらもディスクに関するコマンドですが、調べる対象がまったく異なります。df は「ディスクパーティション全体でどれだけ空きがあるか」を表示するのに対し、du は「特定のディレクトリが何バイト消費しているか」を調べます。

コマンド略称の意味調べる対象主な用途
duDisk Usage指定ディレクトリ・ファイルの使用量どのフォルダが容量を食っているか特定
dfDisk Freeマウントされたパーティション全体ディスク全体の空き容量確認

典型的な使い分けとして、まず df -h でディスク全体の残り容量を確認し、「残り10%しかない」と分かったら次に du で「どのディレクトリが大量に使っているか」を掘り下げる——というワークフローが定番です。dfで全体像を掴み、duで犯人を特定するイメージです。

AI鬼管理山崎 AI鬼管理山崎
dfとduを混乱する方がとても多いです。シンプルに覚えるなら「df=ディスク全体の残量チェック」「du=フォルダごとの使用量掘り下げ」と覚えてください。問題を発見するのがdf、原因を特定するのがduです。

1-2. duコマンドが必要になる典型シナリオ

日々の運用でduコマンドが必要になる場面は多岐にわたります。特によくあるのは以下のような状況です。ディスクが満杯に近づいてアラートが出た、特定のサービスが突然遅くなった、バックアップが失敗した——こういったトラブルの多くはディスク容量の問題が根本原因です。

✔️ログファイルの肥大化:/var/log/ 以下のアクセスログ・エラーログが数十GBになっているケース
✔️AIデータセットの蓄積:機械学習用の画像・テキストデータが数百GBに膨れ上がっているケース
✔️バックアップファイルの未削除:古いバックアップが /backup/ に残り続けているケース
✔️一時ファイルの放置:/tmp/ や各種キャッシュが削除されずにたまり続けているケース
✔️コンテナ・仮想マシンのイメージ:Dockerイメージや未使用のVMスナップショットが積み重なっているケース
✔️メールスプールの肥大化:/var/mail/ や /var/spool/ に未読メールが溜まっているケース
💡 ディスク容量監視の重要性

ディスクが100%になるとOSはファイルの書き込みができなくなり、サービスが停止します。アプリケーションログも書けなくなるため、「なぜ止まったのか」の原因調査すらできなくなるケースも。月1回程度のduチェックを習慣にするだけで、こうした最悪の事態を未然に防げます。

1-3. duコマンドの実際の動作原理

duコマンドは指定したディレクトリを再帰的(recursively)にたどり、各ファイルのディスク使用量を合算して表示します。「再帰的」とは、指定ディレクトリの中のサブディレクトリ、さらにその中のサブディレクトリ…と、階層を何段でも自動的に辿ることを意味します。ファイル自体のサイズ(apparent size)ではなく、実際にディスクブロックとして占有しているサイズが計算されます。

📚 用語解説

ディスクブロック:ディスクがデータを読み書きする最小単位。一般的なLinuxシステムでは4KB(4,096バイト)が1ブロックです。100バイトのファイルでも最低1ブロック(4KB)を占有するため、「ファイルサイズの合計」と「実際のディスク使用量」はしばしば異なります。

02 duコマンドの基本構文と出力の読み方 引数なし実行から、出力に表示される数字の単位まで丁寧に解説

duコマンドの基本構文はシンプルです。引数(調べたいパス)を指定するか、省略するとカレントディレクトリが対象になります。まず実際に叩いてみて、出力を読めるようになることが出発点です。

2-1. 基本構文

du [オプション] [ファイル/ディレクトリ...]

最もシンプルな使い方は引数なしで実行することです。カレントディレクトリ(現在いるディレクトリ)以下の全サブディレクトリの使用量が表示されます。

# カレントディレクトリの使用量を表示
$ du

# 特定ディレクトリを指定する場合
$ du /var/log

# 複数のディレクトリを同時に指定
$ du /var/log /home /tmp

2-2. デフォルト出力の単位を理解する

オプションなしで実行したとき、出力される数字の単位は512バイトブロック(または1KBブロック)です。環境によって異なりますが、多くのLinuxでは1KBブロックが使われます。この生の数字は直感的でないため、実際の作業では後述の -h(human-readable)オプションをほぼ必ず付けます。

# オプションなし(1KBブロック単位で出力される)
$ du /var/log
4       /var/log/apt/term.log
12      /var/log/apt
8       /var/log/auth.log
...
2048    /var/log

# -h オプション付き(人間が読みやすいサイズに変換)
$ du -h /var/log
4.0K    /var/log/apt/term.log
12K     /var/log/apt
8.0K    /var/log/auth.log
...
2.0M    /var/log
💡 実務では -h を常に付ける

生の数字(1024、4096 などのブロック数)より「2.0M」「1.5G」の方が圧倒的に読みやすいです。後述するすべての実用例でも -h オプションを組み合わせています。迷ったらまず du -h で始めましょう。

代表菅澤 代表菅澤
私が最初にduコマンドを覚えたとき、出力される数字の単位が分からなくて混乱しました。「4096って何?4GB?4KB?」と。-hオプションを知ってから、一気に使いやすくなりました。

2-3. 出力の構造を読む

duの出力は「サイズ(タブ区切り)パス名」という構造です。各行がそのディレクトリ以下の合計使用量を表しています。サブディレクトリが先に表示され、最後に親ディレクトリの合計(子ディレクトリを含む)が表示されます。

$ du -h /var/log
4.0K    /var/log/apt/term.log    ← /var/log/apt/term.log 単体のサイズ(-a付きの場合)
12K     /var/log/apt             ← /var/log/apt ディレクトリ以下の合計
8.0K    /var/log/auth.log
2.0M    /var/log                 ← /var/log 以下すべての合計(最後に表示)

📚 用語解説

再帰処理:コンピュータが処理を繰り返す手法の一つ。duの場合、「指定ディレクトリの中のディレクトリを調べ、そのまた中のディレクトリを調べ…」と、ネストが何段あっても自動で掘り下げます。終わりのない入れ子構造を一括で処理できる強力な仕組みです。

03 duコマンドの全オプション一覧と使い方 頻出オプションから高度な使い方まで、実例付きで完全網羅

duコマンドには多数のオプションがあります。すべてを暗記する必要はありませんが、よく使う10個程度を押さえておくと、あらゆる状況に対応できます。まず全体を表で把握してから、重要なものを実例付きで解説します。

オプション説明主な用途
-h, --human-readableK・M・G などの単位で表示常に付けるのがおすすめ
-s, --summarize指定パスの合計のみ表示(サブディレクトリ非表示)特定ディレクトリの総サイズを一発確認
-a, --allディレクトリだけでなくファイルも個別に表示どのファイルが大きいか特定したい時
-S, --separate-dirsサブディレクトリのサイズを合計に含めない各階層のサイズを独立して把握したい時
-c, --total最後に全体の合計を追加表示複数パスの合計サイズを知りたい時
-b, --bytesバイト単位で表示(apparent-size)正確なバイト数が必要な時
-k1KBブロック単位で表示スクリプトで数値処理する時
-m1MBブロック単位で表示大容量ファイルの粗い確認
--max-depth=N (-d N)指定した階層までしか表示しない深い階層を除いて概要を見たい時
--exclude=PATTERN特定のパターンに一致するファイル・ディレクトリを除外キャッシュや仮想環境を除いてサイズを見たい時
-x, --one-file-system異なるファイルシステムに跨らないマウントポイントを無視して計測したい時
-L, --dereferenceシンボリックリンク先のファイルのサイズを計測シンリンクを実体として計測したい時
--apparent-size実際のディスクブロックではなく見た目のサイズを表示スパースファイルの実サイズ確認
-0, --null出力を改行でなくNULLで区切るスペース入りファイル名を安全に処理

3-1. -h(human-readable):必ず付けるべき基本オプション

-h オプションは「人間が読みやすい形式(human-readable)」でサイズを表示します。バイト数ではなく、4.0K・2.3M・1.7G のような単位付き表示に変換されます。実際の業務では、このオプションなしでduを使う場面はほぼないと言っても過言ではありません。

# -h なし(読みにくい)
$ du /home/user/projects
2048    /home/user/projects/website
51200   /home/user/projects/dataset
102400  /home/user/projects

# -h あり(直感的に分かる)
$ du -h /home/user/projects
2.0M    /home/user/projects/website
50M     /home/user/projects/dataset
100M    /home/user/projects

3-2. -s(summarize):合計だけ表示する

-s オプションは、指定したパスの合計サイズだけを1行で表示します。サブディレクトリが何百個あっても、最終的な合計1行だけが出てきます。「このフォルダ全体で何GBか?」を素早く確認したい時に使います。複数パスを指定して -c オプションも一緒に使うと、それぞれの合計+全体の合計が確認できます。

# /home ディレクトリ全体の合計サイズだけ確認
$ du -sh /home
25G     /home

# 複数パスの合計と全体合計を表示(-c と組み合わせ)
$ du -sh /var/log /home /tmp -c
2.3G    /var/log
25G     /home
500M    /tmp
27.8G   total     ← -c で全体合計が追加される
AI鬼管理山崎 AI鬼管理山崎
-s は「ざっくり全体像を掴む」ためのオプションです。先に -s で大きいディレクトリを把握してから、--max-depth で詳細を掘り下げるというアプローチが効率的です。

3-3. --max-depth=N:指定階層まで表示する(最も実用的)

--max-depth=N は、指定した階層数までのディレクトリのみ表示します。Nに1を指定すると、指定パスの直下のディレクトリのみが表示され、深い階層は非表示になります。実際のサーバー管理では最も頻繁に使うオプションの一つです。

# /var の直下ディレクトリのサイズを確認(1階層)
$ du -h --max-depth=1 /var
2.3G    /var/log
4.5G    /var/lib
200M    /var/cache
50M     /var/tmp
7.1G    /var

# 2階層まで展開して確認
$ du -h --max-depth=2 /var
2.1G    /var/log/nginx
180M    /var/log/mysql
2.3G    /var/log
3.8G    /var/lib/docker
700M    /var/lib/mysql
4.5G    /var/lib
...
💡 --max-depth=1 はディスク調査の起点

大容量のディレクトリを絞り込む際は、まず --max-depth=1 でトップレベルを確認し、容量が大きいディレクトリに絞って --max-depth=2 で次の階層を確認する、というトップダウン方式が効率的です。

3-4. -a(all):ファイルも個別に表示する

-a オプションを付けると、ディレクトリだけでなく個々のファイルのサイズも表示されます。デフォルトではディレクトリの合計のみ表示されますが、-a を付けるとファイル1つ1つが列挙されます。後述するsortコマンドと組み合わせることで「このディレクトリで最も大きいファイルはどれか」を特定できます。

# ディレクトリのみ表示(デフォルト)
$ du -h /var/log
4.0K    /var/log/apt
2.3G    /var/log

# ファイルも表示(-a オプション)
$ du -ha /var/log
4.0K    /var/log/apt/term.log
8.0K    /var/log/auth.log
1.8G    /var/log/nginx/access.log    ← 大きいファイルが見える
500M    /var/log/mysql/mysql.log
2.3G    /var/log

3-5. --exclude=PATTERN:特定ファイルを除外する

--exclude=PATTERN を使うと、指定したパターンに一致するファイルやディレクトリをカウントから除外できます。例えばDockerコンテナイメージやPythonの仮想環境(venv)など、「本来のプロジェクトとは別の大容量ファイル」を除いて計測したい場合に便利です。ワイルドカード(*)が使えます。

# .gitディレクトリを除外してプロジェクトサイズを計測
$ du -sh --exclude=".git" /home/user/myproject

# node_modules と .cache を除外
$ du -sh --exclude="node_modules" --exclude=".cache" /home/user/app

# 複数の拡張子を除外(ログファイルなど)
$ du -sh --exclude="*.log" --exclude="*.tmp" /var
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 sortコマンドと組み合わせる――容量大きい順に並べる 「どのフォルダが一番デカいか」を瞬時に特定する実践的な使い方

duコマンド単体では出力がディレクトリ構造に沿った順番になるため、「どこが一番容量を使っているか」がすぐには分かりません。ここで sortコマンドとパイプ(|)で組み合わせることで、「容量の大きい順に並べる」ことができます。実際のサーバー調査でほぼ毎回使うパターンです。

📚 用語解説

パイプ(|):Linuxのコマンドをつなぐ仕組み。左のコマンドの出力を右のコマンドの入力として渡します。du | sort なら「duの結果をsortに渡して並べ替える」という意味。複数のコマンドをチェーンしてより複雑な処理を実現できます。

4-1. 基本的な組み合わせパターン

du -h の出力を sort -rh に渡すと、人間が読みやすい単位(K・M・G)を考慮した上で、大きい順(-r: reverse, -h: human-readable sort)に並べ替えてくれます。この -rh の組み合わせが重要で、-rh なしだと数字の大小ではなく文字列として並べられ、「10M が 2M より小さい」という誤った並び順になることがあります。

# カレントディレクトリの容量を大きい順に表示
$ du -h | sort -rh

# /var 以下を1階層で大きい順に表示(最も使う組み合わせ)
$ du -h --max-depth=1 /var | sort -rh
4.5G    /var/lib
2.3G    /var/log
200M    /var/cache
50M     /var/tmp
7.1G    /var

# 上位10件だけ表示(head と組み合わせ)
$ du -h --max-depth=1 / | sort -rh | head -10

4-2. ホームディレクトリの使用量TOP10を調べる

ユーザーのホームディレクトリ(/home/username/)が肥大化している場合、どのサブディレクトリが原因かを特定するのに以下のコマンドが便利です。特にAI・機械学習のプロジェクトでデータセットが膨れ上がるケースが多く、弊社でも月1回程度このコマンドで定期チェックしています。

# ホームディレクトリのサブディレクトリをサイズ順に表示
$ du -sh ~/* | sort -rh | head -10
25G     /home/user/datasets
8.5G    /home/user/models
3.2G    /home/user/videos
1.5G    /home/user/backups
800M    /home/user/logs
...

# 隠しディレクトリ(.で始まる)も含める場合
$ du -sh ~/.* ~/* 2>/dev/null | sort -rh | head -15
代表菅澤 代表菅澤
「なぜか急にディスクが減った」というアラートが来たとき、まずこのコマンドを実行します。たいていはモデルのチェックポイントファイルやログの蓄積が原因で、数分で特定できます。

4-3. ファイルも含めて大きいもの順に並べる

ディレクトリではなく、個々のファイルの中で最も大きいものを探したい場合は -a オプションを組み合わせます。ただし -a は全ファイルを列挙するため大量の行が出てくることに注意し、head や grep と組み合わせて絞り込むことを推奨します。

# /var/log 以下のファイルを大きい順に表示(上位20件)
$ du -ah /var/log | sort -rh | head -20
1.8G    /var/log/nginx/access.log
500M    /var/log/mysql/mysql.log
200M    /var/log/syslog
...

# 100MB以上のファイルのみ表示
$ du -ah /var | sort -rh | awk '$1 ~ /G|[0-9]{3}M/ {print}'

# 特定の拡張子だけ対象にする
$ find /var/log -name "*.log" -exec du -sh {} \; | sort -rh | head -10

05 findコマンドと組み合わせる――条件付き検索 ファイルサイズ・更新日時・拡張子などの条件で絞り込む高度な使い方

duコマンドは「ディレクトリ全体の合計」を調べるのが得意ですが、「特定の条件(例: 1GB以上のファイル、30日以上アクセスされていないファイル)を満たすもの」を探したい場合は findコマンドと組み合わせるのが効果的です。findで条件に一致するファイルを絞り込み、その結果をduに渡してサイズを表示するパターンです。

📚 用語解説

findコマンド:Linuxのファイル検索コマンド。サイズ・更新日時・拡張子・所有者など、様々な条件でファイルを絞り込める。du と組み合わせると「条件を満たすファイルの合計サイズ」を計算できます。

5-1. 大きいファイルを探す(1GB以上)

ディスクを圧迫している大きなファイルを直接特定したい場合、findの -size オプションでサイズによる絞り込みが可能です。サーバーに気づかないうちに巨大なダンプファイルやメモリダンプが作成されることがあり、このコマンドで素早く発見できます。

# ホームディレクトリで1GB以上のファイルを探す
$ find /home -type f -size +1G 2>/dev/null | xargs du -sh | sort -rh

# /var 以下で100MB以上のファイルを探す
$ find /var -type f -size +100M 2>/dev/null -exec du -sh {} \; | sort -rh

# プロジェクトディレクトリで500MB以上のファイルを探す
$ find /srv/projects -type f -size +500M -exec du -sh {} \; | sort -rh

5-2. 古いファイルを探す(30日以上アクセスなし)

長期間アクセスされていないファイルは削除の候補になります。findの -atime オプションでアクセス時刻による絞り込みができます。ただし削除前には内容を確認し、本当に不要かを判断することが重要です。

# 30日以上アクセスされていないログファイルを探す
$ find /var/log -name "*.log" -atime +30 -exec du -sh {} \; | sort -rh

# 90日以上更新されていない .bak ファイルを探す(更新時刻)
$ find /home -name "*.bak" -mtime +90 2>/dev/null -exec du -sh {} \; | sort -rh

# 結果をファイルに保存しておく(後で確認・削除判断)
$ find /var -mtime +60 -type f 2>/dev/null > /tmp/old_files.txt
$ wc -l /tmp/old_files.txt   # 件数確認
$ du -sh /var/log/*.log 2>/dev/null  # ログ合計サイズを手動確認
⚠️ 削除は慎重に

findで見つけたファイルを即座にrm -fで削除するのは危険です。必ずリストをファイルに保存してから内容を確認し、本当に不要かを判断した上で削除してください。特にシステムファイルや設定ファイルを誤って削除すると、サービスが起動しなくなる場合があります。

5-3. 特定の拡張子ファイルの合計サイズを計算する

「プロジェクト内のすべての .csv ファイルは合計何GBか」「ログファイル全部でどのくらい容量を取っているか」を調べたい場面があります。findで拡張子を絞り込み、xargs du で合計サイズを計算するパターンが便利です。

# すべての .csv ファイルの合計サイズ
$ find /home/user/data -name "*.csv" | xargs du -sh 2>/dev/null

# ログファイルの合計サイズ(再帰的に)
$ find /var/log -name "*.log" -print0 | xargs -0 du -sc | tail -1

# Dockerイメージの合計サイズを確認
$ find /var/lib/docker -type f | xargs du -sh 2>/dev/null | tail -1

# Pythonキャッシュファイルの合計
$ find /home -name "__pycache__" -type d | xargs du -sh | sort -rh
AI鬼管理山崎 AI鬼管理山崎
AIや機械学習プロジェクトでは、学習済みモデルのチェックポイントファイル(.pth, .pkl, .h5 など)が数GBになることがよくあります。find で拡張子を絞り込んで合計サイズを確認する習慣をつけておくと、ディスク管理がずっと楽になります。

06 Mac(BSD版du)とLinux(GNU版du)の違い 同じコマンドなのに挙動が違う?macOSで使う際の注意点を整理

「Linuxで使えたコマンドが Macで動かない」——これはBSD系のコマンドを採用しているmacOSとGNU系のLinuxとの仕様の違いによって起こる、よくある問題です。duコマンドも例外ではなく、一部のオプションでLinuxとmacOSで挙動が異なります。両方の環境を使う方は以下を把握しておいてください。

機能GNU du (Linux)BSD du (macOS)対処法
階層の深さ制限--max-depth=N-d NmacOSでは -d を使う
-h オプションほぼ同じ挙動ほぼ同じ挙動互換あり
-b オプションバイト単位表示非対応(エラーになる)macOSでは --apparent-size 相当なし
--apparent-size見かけのサイズ表示非対応macOSでは代替なし
--exclude=PATTERN対応対応(同じ記法)互換あり
-x (one-file-system)対応対応互換あり
ブロックサイズのデフォルト1KB512バイト-k オプションで合わせる

6-1. --max-depth と -d の違い

最も頻繁にハマるのが、階層の深さを指定するオプションです。LinuxのGNU duでは --max-depth=1 と書きますが、macOSのBSD duでは -d 1 と書きます。これを知らないと、Macで du --max-depth=1 を実行したときに「illegal option」エラーが出て混乱します。

# Linux(GNU du)での書き方
$ du -h --max-depth=1 /var

# macOS(BSD du)での書き方
$ du -hd 1 /var
# または
$ du -h -d 1 /var

# 両方で動くようにエイリアスを設定する方法(~/.bashrc や ~/.zshrc に追加)
# Linuxなら問題なし、macOSでもGNU coreutilsをHomebrewで入れれば解決
alias du="gdu"   # macOSでhomebrew install coreutils 後に有効
💡 macOSでGNU coreutilsを使う方法

Homebrewで「brew install coreutils」を実行すると、GNU版のduが「gdu」というコマンドで使えるようになります。~/.zshrc に「alias du=gdu」を追加しておくと、LinuxとmacOSで同じコマンドが使えて便利です。開発やサーバー管理で両方の環境を使う方に推奨します。

6-2. デフォルトブロックサイズの違い

もう一つの違いはデフォルトのブロックサイズです。LinuxのGNU duはデフォルトで1KBブロックで表示しますが、macOSのBSD duは512バイトブロックがデフォルトです。そのため、オプションなしでdoを実行したとき、同じディレクトリでもmacOSの数字がLinuxの約2倍になります。どちらも -k オプション(1KB単位)や -h オプション(人間が読める形式)を付ければ統一されるので、実用上は -h を常に付けることで解決できます。

⚠️ スクリプトの移植に注意

シェルスクリプトでduの出力を数値として処理する場合、Linuxで動いていたスクリプトがmacOSでは2倍の数字が出て誤動作することがあります。スクリプトの中でduを使う際は、必ず -k(1KBブロック統一)または --block-size=1(バイト統一)を明示的に指定して、環境依存を排除することをおすすめします。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 「Permission denied」エラーの対処法 duでよく遭遇するエラーの原因と、正しい解決方法

duコマンドを実行したとき、最もよく遭遇するエラーが 「du: cannot read directory 'XXXX': Permission denied」 というメッセージです。これは、参照しようとしたディレクトリに対して読み取り権限がないために発生します。特にシステムディレクトリ(/etc, /root, /proc など)や、他のユーザーのホームディレクトリを調べようとした場合に出てきます。

7-1. sudoを使って解決する

最もシンプルな解決方法は、コマンドの先頭に sudo を付けて管理者権限で実行することです。sudoを使うと、そのコマンドの実行権限がroot(スーパーユーザー)に昇格し、通常アクセスできないディレクトリも参照できます。ただし、sudoを使える(sudoersに登録されている)ユーザーである必要があります。

# sudo なし(一部のディレクトリでアクセス制限エラーが出る)
$ du -sh /var/log
du: cannot read directory '/var/log/secure': Permission denied
du: cannot read directory '/var/log/audit': Permission denied
1.8G    /var/log

# sudo 付き(すべてのディレクトリを参照できる)
$ sudo du -sh /var/log
2.3G    /var/log

# システムディレクトリを調べる場合(管理者権限で実行)
$ sudo du -h --max-depth=1 /var | sort -rh | head -20

7-2. エラーを無視して出力する(2>/dev/null)

「Permission deniedのエラーメッセージは見たくないが、アクセスできるディレクトリのサイズは知りたい」という場合は、エラー出力(stderr)を /dev/null にリダイレクトしてエラーを捨てるテクニックが使えます。2>/dev/null を末尾に付けることで、エラーメッセージだけを消しつつ、正常な出力は画面に表示されます。

# エラーメッセージを非表示にする
$ du -sh /var/log 2>/dev/null
2.3G    /var/log

# エラーを無視しながらも大きいディレクトリを探す
$ du -h --max-depth=1 / 2>/dev/null | sort -rh | head -20

# findとの組み合わせでもエラーを抑制
$ find /var /home -type f -size +1G 2>/dev/null | xargs du -sh 2>/dev/null

📚 用語解説

stderr(標準エラー出力):Linuxコマンドには「標準出力(stdout)」と「標準エラー出力(stderr)」の2つの出力先があります。通常のメッセージはstdoutに、エラーメッセージはstderrに出ます。「2>/dev/null」はstderr(ファイルディスクリプタ番号2)を/dev/null(データを捨てる仮想ファイル)に向けるリダイレクト命令です。

7-3. その他のよくあるエラーと対処法

エラーメッセージ原因対処法
du: cannot read directory: Permission denied読み取り権限がないsudo を付ける、または 2>/dev/null でエラーを抑制
du: command not foundduコマンドがインストールされていないapt install coreutils(Debian/Ubuntu)または yum install coreutils(CentOS)
du: illegal option -- -macOSでLinux用オプションを使った-d N に変更、またはGNU coreutilsをインストール
xargs: argument list too longfindの結果が多すぎてxargsに渡せないxargs -0 と find -print0 を組み合わせる
出力が止まらない膨大な数のファイルを処理中Ctrl+C で中断し --max-depth で絞り込む
代表菅澤 代表菅澤
「Permission denied」を見ると焦りますが、慌てず対処法を知っていれば大丈夫です。弊社では基本的に sudo du を多用しています。サーバー管理者なら sudo を使える環境は当然なので、最初から sudo を付けて実行する癖をつけておくと便利です。

08 業務での実践シナリオ――サーバー管理・AIプロジェクト よくある現場の問題と、duコマンドを使った解決フローを実例で解説

ここからは、実際の業務で遭遇する典型的なシナリオと、duコマンドを使った解決フローを紹介します。「コマンドを知っている」だけでなく、「問題が起きたときに迷わず使える」状態を目指してください。

8-1. シナリオ1: Webサーバーのディスクアラート対応

「ディスク使用率が90%を超えた」というアラートが届いた場合の調査フローです。弊社でも実際にあったケースで、原因はNginxのアクセスログが1.8GBまで肥大化していたことでした。以下の手順でわずか5分以内に原因を特定できます。

Step 1
df -h で
どのパーティションが
逼迫しているか確認
Step 2
sudo du -h --max-depth=1 / で
トップレベルの
大きいディレクトリを特定
Step 3
大きいディレクトリ内を
--max-depth=2 で
さらに掘り下げる
Step 4
du -ah | sort -rh で
大きいファイルを
特定して削除検討
# Step 1: ディスク全体を確認
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   45G   5G  90% /    ← ここが逼迫

# Step 2: / 直下を確認
$ sudo du -h --max-depth=1 / 2>/dev/null | sort -rh | head -10
40G     /var
3.5G    /home
1.2G    /usr
...

# Step 3: /var を掘り下げ
$ sudo du -h --max-depth=2 /var 2>/dev/null | sort -rh | head -10
38G     /var/log
1.5G    /var/lib
...
38G     /var/log/nginx
↑ Nginx ログが犯人!

# Step 4: ログファイルを個別確認
$ sudo du -ah /var/log/nginx | sort -rh | head -5
36G     /var/log/nginx/access.log
1.5G    /var/log/nginx/error.log

8-2. シナリオ2: AIプロジェクトのデータセット管理

機械学習や生成AIのプロジェクトでは、学習用データセット・モデルのチェックポイントファイル・実験結果のログが膨大な容量を占めることがあります。定期的にduでサイズを把握し、不要なファイルを整理する習慣が重要です。

# AI プロジェクトのディレクトリ構成ごとのサイズを確認
$ du -h --max-depth=2 /home/user/ai_project | sort -rh | head -20
80G     /home/user/ai_project/datasets/train
45G     /home/user/ai_project/models/checkpoints
12G     /home/user/ai_project/datasets/validation
8G      /home/user/ai_project/logs/experiments

# モデルチェックポイントファイルだけ確認
$ find /home/user/ai_project -name "*.pth" -o -name "*.pkl" -o -name "*.h5" |   xargs du -sh | sort -rh

# 30日以上前のチェックポイントを特定(削除候補)
$ find /home/user/ai_project/models -mtime +30 \( -name "*.pth" -o -name "*.pkl" \)   -exec du -sh {} \; | sort -rh
💡 AIプロジェクトのストレージ節約tips

最終モデルだけを残してチェックポイントを削除すると劇的に容量が削減できます。実験結果のログも「最新50回分だけ保持」などのルールを設けると管理が楽になります。またtarball(tar.gz)で圧縮してから保存する習慣をつけると、テキスト系のデータセットで50〜70%の容量削減が見込めます。

8-3. シナリオ3: 月次ディスク使用量レポートの生成

定期的にディスク使用量をレポートとして記録しておくと、「先月から急に増えた」という変化を即座に察知できます。以下のシェルスクリプトを月1回cronで実行するだけで、自動的にレポートを保存できます。

#!/bin/bash
# disk_report.sh - 月次ディスク使用量レポート生成
DATE=$(date +%Y%m%d)
REPORT_FILE="/var/reports/disk_${DATE}.txt"

echo "=== ディスク使用量レポート: $(date) ===" > "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

echo "--- ディスク全体 ---" >> "$REPORT_FILE"
df -h >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

echo "--- ディレクトリ別使用量(上位20) ---" >> "$REPORT_FILE"
sudo du -h --max-depth=2 / 2>/dev/null | sort -rh | head -20 >> "$REPORT_FILE"

echo "" >> "$REPORT_FILE"
echo "--- 1GB以上のファイル ---" >> "$REPORT_FILE"
sudo find /var /home -type f -size +1G 2>/dev/null | xargs du -sh 2>/dev/null | sort -rh >> "$REPORT_FILE"

echo "レポートを ${REPORT_FILE} に保存しました"

# cronに登録する場合(毎月1日の午前2時に実行)
# 0 2 1 * * /home/user/disk_report.sh
AI鬼管理山崎 AI鬼管理山崎
月次レポートを自動化しておくと、「先月より /var/log が3GB増えた」という変化がすぐに分かります。人間が毎月手動でduを叩くよりもはるかに確実ですし、Slackに自動通知するように拡張すれば更に楽になります。

09 Claude Codeに任せるとduコマンドが不要になる 「ディスクが増えてきた」と話しかけるだけで、調査から整理提案まで全自動

ここまでduコマンドの詳細を解説してきましたが、実を言うと弊社(株式会社GENAI)では、毎回手動でduを叩いてはいません。Claude Code(Anthropicのターミナル上で動くAIエージェント)に「ディスクの調査をして」と話しかけるだけで、duコマンドの実行から結果の解析・整理提案まで自動でやってくれるからです。

📚 用語解説

Claude Code:Anthropicが提供するターミナル(コマンドライン)上で動くAIエージェント。チャット形式の指示でファイル操作・コマンド実行・スクリプト生成まで自律的に行える業務ツール。Claude ProプランまたはMaxプランに追加料金なしで含まれます。

9-1. Claude Codeへの話しかけ方の例

Claude Codeを使ったディスク管理は、Linuxコマンドの知識がなくても自然な日本語で指示できます。以下のような指示をターミナルで入力するだけで、調査から提案まで一気通貫でやってくれます。

# Claude Code への指示例(ターミナルで "claude" を起動してから話しかける)

「/var/log のディスク使用量を調べて、大きいファイルを特定してください」

「ホームディレクトリの中でどのフォルダが一番容量を使っているか調べて、
 削除できそうなものがあれば候補を教えてください」

「30日以上アクセスされていない1GB以上のファイルをリストアップして、
 削除した場合の容量削減量を計算してください」

「AIプロジェクトの /home/user/ai_project を分析して、
 不要なチェックポイントファイルを削除する手順を作ってください」

Claude Codeは上記の指示を受け取ると、適切なduコマンドやfindコマンドを自動で選択・実行し、結果を解析して「このファイルを削除すると何GB空く」「優先度の高い削除候補はこれ」という形で報告してくれます。コマンドの文法を覚える必要がなく、意図を日本語で伝えるだけで済みます。

人間が
日本語で指示

「/var/log を調べて」
Claude Codeが
コマンドを選択

du, find, sort を組み合わせ
実行・解析
結果を自動集計
整理提案を出力
削除候補・サイズ削減量をレポート

9-2. 弊社GENAIでのClaude Code活用事例

弊社では、Claude Max 20xプラン(月額$200、約30,000円)を契約して、サーバー管理・広告運用・記事制作・経理など全社の業務にClaude Codeを活用しています。ディスク管理についても、月次で「ストレージの整理をして」とClaudeに依頼するだけで、調査から古いバックアップの削除提案まで完結しています。

作業Claude Codeなし(手動)Claude Codeあり削減時間
ディスク逼迫の原因特定df/du/find を手動で組み合わせ(15〜30分)「ディスクを調べて」と話しかけるだけ(3分)約80%削減
月次ストレージレポート作成スクリプト作成+実行(60分)「月次レポートを作って」と指示(5分)約90%削減
不要ファイルの整理提案手動でファイルリストを確認(30分〜)Claude Codeが自動分析・提案(5分)約85%削減
クリーンアップスクリプト作成シェルスクリプトを自分で書く(45分)「スクリプトを生成して」と指示(5分)約90%削減
代表菅澤 代表菅澤
「duコマンドを覚えるより、Claude Codeに頼む方が速い」というのは事実です。ただ、コマンドの仕組みを理解しておくと、Claude Codeが出力した提案の妥当性を判断できる。両方知っておくのがベストです。

「duコマンドを完全マスターしてからClaude Codeを使う」ではなく、duの基本を理解しつつ、繰り返す作業はClaude Codeに任せるというハイブリッドが最も効率的な運用方法です。コマンドの知識はClaude Codeが提案した内容を「正しいか・安全か」を判断するための素養として活きます。

Linux管理・AIツール活用でのClaude Code導入をサポートします

duコマンドのような日々の運用作業をClaude Codeで自動化したい方、またはAIツールを使った業務効率化を本格的に進めたい経営者・管理職の方に、弊社AI鬼管理の導入支援サービスをご紹介します。

AI鬼管理山崎 AI鬼管理山崎
「Linuxサーバーの管理をAIに任せたいが、どこから始めればいいか分からない」という方も、お気軽にご相談ください。弊社の実運用ノウハウをもとに、具体的な自動化プランを一緒に設計します。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. duコマンドとdfコマンドはどう使い分ければいいですか?

A. dfはディスクパーティション全体の空き容量を確認するコマンド、duは特定のディレクトリやファイルの使用量を詳しく調べるコマンドです。ディスクが逼迫した際はまずdf -hで「どのパーティションが問題か」を特定し、次にdu --max-depth=1で「どのフォルダが容量を使っているか」を掘り下げるという使い分けが基本です。

Q. du -h の -h は何の略ですか?

A. -h は「human-readable(人間が読みやすい)」の略です。このオプションを付けると、バイト数の生の数字ではなく「4.0K」「2.3M」「1.5G」のような単位付きの表示になります。実際の業務では常に -h を付けることをおすすめします。

Q. Macでdu --max-depthが使えないのはなぜですか?

A. macOSのduはBSD版(Unix系)で、Linuxで使われるGNU版とは一部オプションが異なります。macOSでは --max-depth=N の代わりに -d N を使います。「du -h -d 1 /var」のように記述してください。LinuxのGNU版と完全に互換にしたい場合は、Homebrewで「brew install coreutils」を実行してGNU版(gdu)を別途インストールする方法もあります。

Q. Permission deniedエラーが出てもサイズを確認することはできますか?

A. はい、2つの方法があります。1つ目はコマンドの先頭にsudoを付けて管理者権限で実行する方法(sudo du -sh /path)、2つ目はエラーを無視するリダイレクト(du -sh /path 2>/dev/null)を末尾に付けてエラーメッセージだけ消す方法です。アクセスできるディレクトリのサイズは表示されます。

Q. duコマンドの実行が遅い・止まった場合はどうすればいいですか?

A. duが遅い主な原因は、調べるファイル数が膨大であることです。解決策として、1) --max-depth=1 で階層を浅くして絞り込む、2) Ctrl+C で中断して調査範囲を狭めて再実行する、3) 夜間など負荷の低い時間帯にniceコマンド(nice -n 19 du -sh /path)でCPU優先度を下げて実行する、といった方法があります。

Q. du -h と du -sh はどう違いますか?

A. -h は「human-readable形式で表示する」オプションで、サブディレクトリも含めてすべての行が人間が読みやすいサイズで表示されます。-s は「summarize(合計のみ表示)」オプションで、指定したパスの合計だけを1行で表示します。-sh と組み合わせると、「人間が読みやすい形式で合計のみ表示」になります。「このフォルダは全部で何GB?」を素早く確認したいときは du -sh が便利です。

Q. Claude Codeを使うとduコマンドを知らなくてもサーバー管理できますか?

A. ある程度は可能です。Claude Codeに「/var/log のディスク使用量を調べて大きいファイルを教えて」と自然言語で指示すると、適切なduコマンドを自動実行して結果をまとめてくれます。ただし、Claude Codeが提案した削除候補が本当に不要かを判断するためにも、duコマンドの基礎を理解しておくことで、より安全で適切な判断ができます。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月18日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。