🎯 この記事で学べること
- 1`df`でディスク全体の空き容量を確認する方法をマスターできます
- 2`du`で特定のディレクトリやファイルの使用量を調べられるようになります
- 3容量を食っているファイルやディレクトリを素早く見つける方法を学べます
- 4`-h`オプションで人間が読みやすい単位表示ができるようになります
- 5ディスク容量不足の原因を特定し、対処する方法を身につけられます
読了時間: 約8分
ディスクの空き容量、大丈夫ですか?
こんにちは!今回は、ディスクの容量を確認する2つの重要なコマンド、df
とdu
について学んでいきましょう。
「ディスクがいっぱいです」というエラーメッセージを見たことはありませんか?そんな時、何が容量を食っているのか調べる必要がありますよね。Windowsならプロパティで確認しますが、Linuxではdf
とdu
という便利なコマンドがあるんです!
- df(disk free): ディスク全体の空き容量を確認
- du(disk usage): 個々のファイルやフォルダの使用量を確認
この2つを使い分けることで、ディスク管理のプロになれますよ!
dfコマンド - ディスク全体を見渡そう
基本的な使い方
まずはdf
コマンドで、システム全体のディスク使用状況を見てみましょう:
$ df
こんな感じで表示されます:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 102400000 51200000 46000000 53% /
/dev/sda2 51200000 10240000 38400000 22% /home
数字が大きすぎて読みにくいですよね?これはKB(キロバイト)単位で表示されているからです。もっと読みやすくする方法があります!
人間が読みやすい表示(-hオプション)
-h
(human-readable)オプションを付けると、GB、MB、KBなど適切な単位で表示してくれます:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 98G 49G 44G 53% /
/dev/sda2 49G 9.8G 37G 22% /home
tmpfs 7.8G 0 7.8G 0% /dev/shm
df -h
は最もよく使うコマンドの一つです!「ディスクの空き容量どれくらい?」と聞かれたら、まずはこれを実行しましょう。
特定の場所だけチェック
全部じゃなくて、特定の場所だけ見たい時もありますよね:
# 現在いるディレクトリの容量
$ df -h .
# ホームディレクトリの容量
$ df -h ~
# /varディレクトリの容量
$ df -h /var
ファイルシステムの種類も見る(-Tオプション)
どんな種類のファイルシステムか気になる時は:
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 98G 49G 44G 53% /
/dev/sda2 ext4 49G 9.8G 37G 22% /home
tmpfs tmpfs 7.8G 0 7.8G 0% /dev/shm
🎮 理解度チェック
Q1: df -h
コマンドの-h
オプションは何の略ですか?
duコマンド - 犯人を見つけ出そう!
df
でディスクがいっぱいだとわかったら、次はdu
で「何が容量を食っているか」を調べます!
基本的な使い方
現在のディレクトリ以下の使用量を表示:
$ du
これも数字が読みにくいので、-h
オプションを使いましょう:
$ du -h
4.0K ./config
120M ./logs
2.5G ./backup
50M ./temp
2.7G .
合計だけ見たい(-sオプション)
詳細はいらない、合計だけ知りたい時は:
# 現在のディレクトリの合計
$ du -sh
# 特定のディレクトリの合計
$ du -sh /var/log
# 複数指定もOK
$ du -sh /tmp /var/tmp /home/user/Downloads
du -sh *
は「このディレクトリの中で何が一番容量を使っているか」を調べる定番コマンドです!
大きい順に並べる(超便利!)
容量の大きいものから順に見たい時は、sort
コマンドと組み合わせます:
# 大きい順に並べてトップ10を表示
$ du -sh * | sort -hr | head -10
実行例:
2.5G backup
850M documents
320M videos
120M logs
80M pictures
ディレクトリの深さを制限
深い階層まで全部見ると情報が多すぎる時は:
# 1階層下まで
$ du -h --max-depth=1
# または短縮形
$ du -h -d 1
# 2階層下まで
$ du -h -d 2
🎮 理解度チェック
Q2: 現在のディレクトリの合計使用量だけを人間が読みやすい形式で表示するコマンドは?
実践!ディスク容量問題を解決する
シナリオ1: ディスクがいっぱい!原因を探る
# 1. まず全体を確認
$ df -h
# /が95%使用中!
# 2. ルートディレクトリから調査開始
$ sudo du -sh /* | sort -hr | head -10
# 3. 容量を食っているディレクトリを深堀り
$ sudo du -sh /var/* | sort -hr | head -10
# 4. さらに詳しく
$ sudo du -sh /var/log/* | sort -hr | head -10
シナリオ2: ホームディレクトリの整理
# 隠しファイルも含めて確認
$ du -sh ~/* ~/.* 2>/dev/null | sort -hr | head -20
# ダウンロードフォルダをチェック
$ du -sh ~/Downloads/* | sort -hr | head -10
# 古い大きなファイルを探す
$ find ~ -type f -size +100M -mtime +30 -exec ls -lh {} \;
シナリオ3: ログファイルの管理
# ログディレクトリの使用量
$ sudo du -sh /var/log/*
# 大きなログファイルを探す
$ sudo find /var/log -type f -size +100M
# 古いログを圧縮
$ sudo gzip /var/log/oldlog.log
便利なテクニック集
ディスク使用率が高い場所を監視
#!/bin/bash
# ディスク使用率80%以上で警告
THRESHOLD=80
df -h | grep -vE '^Filesystem|tmpfs' | while read line; do
usage=$(echo $line | awk '{print $5}' | sed 's/%//')
partition=$(echo $line | awk '{print $6}')
if [ $usage -ge $THRESHOLD ]; then
echo "警告: $partition は ${usage}% 使用中です!"
fi
done
よく使うエイリアス
# ~/.bashrcに追加
alias duh='du -sh * | sort -hr | head -10' # 大きいファイルTOP10
alias dfh='df -hT' # ディスク使用状況
alias ducurrent='du -sh .' # 現在のディレクトリ
特定の拡張子の合計サイズ
# すべての.logファイルの合計
$ find . -name "*.log" -type f -exec du -ch {} + | tail -1
# 画像ファイルの合計
$ find . -regex ".*\.\(jpg\|png\|gif\)" -exec du -ch {} + | tail -1
トラブルシューティング
dfとduの結果が合わない?
時々、df
とdu
の結果が一致しないことがあります:
# 削除したけどまだ開いているファイルをチェック
$ sudo lsof | grep deleted
# プロセスを再起動して解放
$ sudo systemctl restart サービス名
iノードが足りない?
ディスク容量はあるのにファイルが作れない時:
# iノードの使用状況を確認
$ df -i
# 小さなファイルが大量にあるディレクトリを探す
$ for dir in /*; do
echo -n "$dir: "
find "$dir" -xdev -type f | wc -l
done 2>/dev/null
🎮 理解度チェック
Q3: ディスクの使用率が90%を超えた時、最初に実行すべきコマンドの組み合わせは?
より高度な使い方
ncdu - インタラクティブなディスク使用量ビューアー
# インストール
$ sudo apt install ncdu # Ubuntu/Debian
$ sudo yum install ncdu # CentOS/RHEL
# 使い方
$ ncdu /
# 矢印キーで移動、Enterで詳細、dで削除
ディスク使用量レポートの自動化
#!/bin/bash
# 毎週月曜日に実行するレポート
echo "=== ディスク使用量レポート $(date) ===" > disk_report.txt
echo "" >> disk_report.txt
echo "【システム全体】" >> disk_report.txt
df -h >> disk_report.txt
echo "" >> disk_report.txt
echo "【大きいディレクトリTOP20】" >> disk_report.txt
du -sh /* 2>/dev/null | sort -hr | head -20 >> disk_report.txt
# メールで送信
mail -s "週次ディスクレポート" admin@example.com < disk_report.txt
📝 まとめ
今回はdf
とdu
コマンドについて学びました!
- df: ディスク全体の空き容量を確認(
df -h
が定番) - du: 特定のディレクトリやファイルの使用量を確認
du -sh *
で現在のディレクトリ内の使用量を確認sort -hr
と組み合わせて大きい順に表示- 定期的なチェックでディスク容量不足を予防
この2つのコマンドは、システム管理の基本中の基本です。「ディスクがいっぱい!」という緊急事態の時も、落ち着いてdf -h
→du -sh
の順番で調査すれば、必ず原因が見つかります!
次はsortコマンドでデータの並び替えを学びましょう。du
の出力を並び替える時にも使った、とても便利なコマンドです!
YouTube動画で復習
動画でさらに詳しく学びたい方は、CommandAcademyのYouTubeチャンネルをチェック!視覚的にコマンドの動作を確認できます。
ディスク容量の管理は、快適なLinux環境を保つために欠かせません。週に1回はdf -h
でチェックする習慣をつけましょう!