df・du入門|ディスクの空きと使用量を調べる基本

df・du入門|ディスクの空きと使用量を調べる基本

「ディスクの空きがありません」と警告が出て、どこから片付ければいいのか分からず固まったことがあります。

容量を空けるには、まず「全体でどれだけ空いているか」と「どこが容量を食っているか」を分けて見るのが近道です。

この記事では、その二つをそれぞれ担当する df と du の基本を、コピペで試せる形で整理します。

df と du は見ている場所が違う

df はファイルシステム全体の空き容量を、du はディレクトリ単位の使用量を表示するコマンドです。

ざっくり言うと、df は「残りどれだけ空いているか」を、du は「何がどれだけ使っているか」を調べます。

容量が足りないときは、まず df で全体像をつかみ、次に du で犯人を絞り込む——この順で動くと迷いません。

どちらも Linux や macOS に最初から入っているので、追加インストールは要らないのです。

df で空き容量を確認する

まずは df に -h を付けて、人間が読みやすい単位(GB や MB)で表示します。

df -h

Use%(使用率)と Avail(空き)の列を見れば、どのディスクが逼迫しているかが一目で分かります。

特定のパスがどのディスクに属するかを知りたいときは、そのパスをそのまま引数に渡すだけです。

df -h /var

容量は空いているのに書き込めないときは、-i で inode(ファイル数の上限)を疑います

小さなファイルを大量に作ると、容量より先に inode を使い切ってしまうこともあるのです。

df -i /

du でディレクトリの使用量を調べる

du は、指定したディレクトリが使っている容量を計算します。

-s(合計だけ)と -h(読みやすい単位)を合わせた -sh が、最初に覚える形です。

du -sh /usr/lib
# 2.2G	/usr/lib

配下のディレクトリごとの内訳を見たいときは、–max-depth で階層の深さを指定します。

du -h --max-depth=1 /usr

–max-depth=1 なら「直下のディレクトリまで」を表示し、それより深い中身は合算されるのです。

深さを指定しないと全階層を延々と出力するので、まずは 1 から始めるのが安全です。

容量を食っている犯人を探す

du の出力を sort に渡すと、サイズの大きい順に並べ替えられます。

コツは sort に -h を付けることで、2.2G と 862M のような単位付きの値も正しく大小比較してくれるのです。

du -h --max-depth=1 /var | sort -rh | head

これで「/var の直下で容量を食っている上位ディレクトリ」がすぐ見つかります。

ディレクトリではなく大きなファイルを名指しで探したいときは、-a を足しましょう。

du -ah /var/log | sort -rh | head

特定の種類を除いて集計したいときは、–exclude が使えます。

du -h --max-depth=1 --exclude='*.cache' ~

macOS で使うときの注意

GNU 版(多くの Linux)と BSD 版(macOS)では、一部のオプションの書き方が違います。

macOS の du には –max-depth が無く、代わりに -d で深さを指定する仕様です

# macOS
du -d 1 -h /usr | sort -rh

古い macOS の sort は -h に対応しないことがあるので、その場合は Homebrew の coreutils を入れると、gsort や gdu として GNU 版と同じ書き方ができます。

findコマンド入門|ファイルを名前・種類・更新日で探す基本

最後に

容量が足りなくなったら、df で全体の空きを見て、du で犯人を絞る——この二段構えを覚えておくと落ち着いて対処できるのです。

とくに du の –max-depth と sort -rh を組み合わせる形は、そのまま定型として使い回せるはずです。

手が空いたときに一度、自分のホームディレクトリで試しておくと、いざというとき慌てずに済みます。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA