言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. df / du

df / du

『df』と『du』は Linux でディスクの空き容量とディレクトリ別の使用量を調べる基本コマンドです。df -h でファイルシステム全体の空き容量を人間が読みやすい単位で確認し、du -sh /* でどのディレクトリが容量を消費しているかを特定できます。インタラクティブな TUI ツール ncdu を使うと、ドリルダウンしながら視覚的に調査できます。

構文

# -----------------------------------------------
#  df(Disk Free)— ファイルシステム全体の空き容量確認
# -----------------------------------------------

# df -h
#   → 全マウントポイントのディスク使用状況を人間が読みやすい単位で表示します
#   → 容量が GB・MB 単位で表示されます
#   例: df -h

# df -i
#   → 容量ではなく inode の使用状況を表示します
#   → inode が枯渇するとファイルを作成できなくなります
#   例: df -i

# df -h {マウントポイント}
#   → 特定のマウントポイントだけ表示します
#   例: df -h /var

# -----------------------------------------------
#  du(Disk Usage)— ディレクトリ別の使用量確認
# -----------------------------------------------

# du -sh {ディレクトリ}
#   → 指定ディレクトリの合計使用量を人間が読みやすい単位で表示します
#   → -s: サマリーのみ(サブディレクトリを展開しない)
#   → -h: 人間が読みやすい単位(K/M/G)
#   例: du -sh /var/log

# du -h --max-depth=1 {ディレクトリ}
#   → 指定ディレクトリ直下の各サブディレクトリの使用量を表示します
#   → --max-depth=1: 1階層だけ展開します
#   例: du -h --max-depth=1 /var

# du -hs * | sort -rh
#   → カレントディレクトリ内の各エントリを使用量の大きい順に並べます
#   → sort -r: 逆順(大きい順)  sort -h: 人間が読みやすい単位を正しく比較
#   例: cd /var && du -hs * | sort -rh

# -----------------------------------------------
#  ncdu — インタラクティブな TUI ディスク調査ツール
# -----------------------------------------------

# ncdu {ディレクトリ}
#   → TUI でディレクトリツリーを表示し、キーボードでドリルダウンできます
#   → インストール: sudo apt install ncdu(Debian/Ubuntu)
#   →           sudo dnf install ncdu(RHEL/AlmaLinux)
#   例: ncdu /

# -----------------------------------------------
#  find — 大容量ファイルの検出
# -----------------------------------------------

# find {ディレクトリ} -size +{サイズ} -type f
#   → 指定サイズを超えるファイルを列挙します
#   → +100M: 100MB 超  +1G: 1GB 超
#   例: find / -size +100M -type f 2>/dev/null

構文一覧

コマンド説明
df -h全マウントポイントの空き容量を人間が読みやすい単位(K/M/G)で表示します。Use% が 90% を超えているマウントポイントが要注意です。
df -iinode の使用状況を表示します。ファイル数が非常に多い場合、容量に余裕があっても inode が枯渇してファイルを作れなくなることがあります。
df -h /var特定マウントポイントの空き容量のみ表示します。
du -sh {ディレクトリ}指定ディレクトリの合計使用量を1行で表示します。大まかな容量把握に使います。
du -h --max-depth=1 {ディレクトリ}指定ディレクトリ直下のサブディレクトリを1階層だけ展開して使用量を表示します。どのサブディレクトリが大きいかを特定するのに使います。
du -hs * | sort -rhカレントディレクトリ内のエントリを使用量の大きい順に並べます。容量の大きいディレクトリを素早く見つけられます。
ncdu {ディレクトリ}TUI でディレクトリツリーを表示し、矢印キーでドリルダウンできます。d キーでファイルを削除することもできます。
find / -size +100M -type f 2>/dev/null100MB を超えるファイルを検索します。古いバックアップや肥大化したログを発見するのに役立ちます。
find / -name "*.log" -size +50M 2>/dev/null50MB を超えるログファイルを検索します。logrotate の設定漏れで肥大化したログを見つける際に使います。

使用例

ディスクがいっぱいになった原因を調査する
# -----------------------------------------------
#  ディスク枯渇の原因調査手順
#  (桐生一馬のサーバーで / が 98% になった場合)
# -----------------------------------------------

# Step1: どのマウントポイントが逼迫しているか確認します
df -h

# Step2: ルート直下でどのディレクトリが大きいか調査します
du -h --max-depth=1 /

# Step3: /var が大きければさらにドリルダウンします
du -h --max-depth=1 /var

# Step4: /var/log が怪しければログディレクトリを調査します
du -hs /var/log/* | sort -rh

# Step5: 100MB 超のファイルを列挙して手掛かりを探します
find /var -size +100M -type f 2>/dev/null

# Step6: ncdu で視覚的に確認しながら不要ファイルを削除します
# (j/k または矢印キーで移動、d キーで削除)
ncdu /var

実行するコマンドは次の通りです。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   48G  980M  98% /
/dev/sda2       100G   12G   88G  12% /home
tmpfs           7.8G     0  7.8G   0% /dev/shm
$ du -h --max-depth=1 /var
4.0K	/var/backups
2.1G	/var/log
890M	/var/lib
44G	/var/lib/kiryu_db_backup
4.0K	/var/cache
46G	/var
$ find /var -size +100M -type f 2>/dev/null
/var/lib/kiryu_db_backup/dump_20260101.sql.gz
/var/lib/kiryu_db_backup/dump_20260201.sql.gz
/var/lib/kiryu_db_backup/dump_20260301.sql.gz
/var/log/nginx/majima_access.log.1
inode の枯渇を調査する
# -----------------------------------------------
#  inode が枯渇しているかどうか確認します
#  (真島吾朗のサーバーで「No space left on device」
#   が出るのに df -h では空き容量がある場合)
# -----------------------------------------------

# inode の使用状況を確認します
# IUse% が 100% に近い場合が inode 枯渇です
df -i

# inode を大量消費しているディレクトリを探します
# (ファイル数が多いディレクトリを特定します)
find / -xdev -printf '%h\n' 2>/dev/null | sort | uniq -c | sort -rn | head -20

実行するコマンドは次の通りです。

$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda1      3276800 3276795       5  100% /
/dev/sda2      6553600  124032 6429568    2% /home
$ find / -xdev -printf '%h\n' 2>/dev/null | sort | uniq -c | sort -rn | head -5
 892341 /var/spool/majima_mail_queue
  84210 /tmp/nishiki_sessions
   4821 /var/log
    312 /usr/lib
    201 /etc
ncdu でインタラクティブに調査する
# -----------------------------------------------
#  ncdu のインストールと基本的な使い方
# -----------------------------------------------

# Debian/Ubuntu 系へのインストール
sudo apt install ncdu

# RHEL/AlmaLinux 系へのインストール
sudo dnf install ncdu

# / からスキャンを開始します(時間がかかる場合があります)
ncdu /

# /home だけを素早く調査する場合
ncdu /home

# スキャン結果をファイルに保存しておき、後で確認することもできます
# (本番サーバーで負荷を最小限にしたい場合に有効です)
ncdu -o /tmp/tatsuya_disk_report.json /
ncdu -f /tmp/tatsuya_disk_report.json

実行するコマンドは次の通りです。

$ ncdu /home
ncdu 1.19 ~ Use the arrow keys to navigate, press ? for help
--- /home -----------------------------------------------------------------------
   18.2 GiB [##########] /kiryu
    8.7 GiB [####      ] /majima
    3.1 GiB [#         ] /nishiki
  512.0 MiB [          ] /date_true
   48.3 MiB [          ] /品田辰雄_work
(↓ キーで移動、→ または Enter でドリルダウン、d キーで削除)

概要

『df』と『du』はディスク容量トラブル対応の第一歩となる必須コマンドです。df -h でファイルシステム全体を俯瞰し、Use% が高いマウントポイントを特定してから、du -h --max-depth=1 でドリルダウンしていくのが基本的な調査手順です。容量には余裕があるのに「No space left on device」が発生する場合は、df -i で inode の枯渇を疑ってください。メールキューや一時ファイルが大量に積み上がると inode が先に尽きることがあります。大容量ファイルの特定には find -size が有効で、古いバックアップやローテーションされていない肥大化ログを素早く発見できます。ログの肥大化を根本から防ぐには logrotate の設定を見直してください。また、Linux のディレクトリ構成(FHS)を理解しておくと、du の調査結果をもとにどのディレクトリを重点的に調べるべきか判断しやすくなります。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。