Linuxサーバーの管理や運用をしていると、ディレクトリごとの容量を確認したい場面がよくあります。特にディスク容量が逼迫しているときは、どのフォルダがどれくらいのサイズを占めているか素早く把握することが重要です。
そんなときに活躍するのが、du -sh
コマンドです。この記事では、du -sh
を使ったディレクトリ容量の確認方法をわかりやすく解説します。さらに、取得したサイズを変数に代入してスクリプトで処理する方法についても紹介します。Linux初心者の方にもわかりやすい内容になっていますので、ぜひ最後までご覧ください。
du -sh コマンドとは?
du
(disk usage)は、ファイルやディレクトリの使用容量を確認するためのLinuxコマンドです。その中でも特に使いやすいオプションが -sh
の組み合わせです。
-s
:summary(合計のみ)を表示。サブディレクトリの容量を個別に出さず、合計だけを表示します。-h
:human-readable(人が読みやすい形式)で表示。KB、MB、GBなど単位を付けて表示します。
使用例
du -sh /var/log
このコマンドを実行すると、以下のような出力が得られます。
200M /var/log
このように、/var/log
ディレクトリの合計サイズが200MBであることがわかります。
容量の大きいディレクトリを調べる
容量の多いディレクトリを調べたい場合は、*
を使ってカレントディレクトリ以下のすべてのディレクトリの容量を一覧で出すこともできます。
du -sh *
このコマンドは、現在のディレクトリにあるすべてのファイルやサブディレクトリのサイズを一覧で表示してくれます。
例:
1.1G backups
4.0K README.md
340M logs
このように、どのディレクトリやファイルが多くの容量を使っているか一目で確認できます。
結果を変数に代入する方法
シェルスクリプトでディレクトリのサイズを取得し、後続の処理に活用したい場合、コマンドの出力結果を変数に代入することができます。
基本形
SIZE=$(du -sh /var/log | awk '{print $1}')
この例では、/var/log
ディレクトリのサイズ(例:200M
)を SIZE
という変数に代入しています。
awk を使う理由
du -sh
の出力は以下のようにタブで区切られた2列です:
200M /var/log
そのため awk '{print $1}'
を使って、サイズの部分(1列目)だけを取り出します。
スクリプトでサイズチェック処理を行う例
実際のスクリプト例を以下に示します。あるディレクトリのサイズを確認し、一定の閾値を超えたら警告を表示する処理です。
#!/bin/bash
TARGET_DIR="/var/log"
MAX_SIZE_MB=500
# サイズを取得(人間が読める形式ではなく、バイト単位で取得)
SIZE_BYTES=$(du -sb "$TARGET_DIR" | awk '{print $1}')
SIZE_MB=$(($SIZE_BYTES / 1024 / 1024))
echo "$TARGET_DIR のサイズは ${SIZE_MB}MB です。"
if [ "$SIZE_MB" -gt "$MAX_SIZE_MB" ]; then
echo "警告: $TARGET_DIR の容量が ${MAX_SIZE_MB}MB を超えています。"
else
echo "OK: 容量は問題ありません。"
fi
解説
du -sb
:サイズをバイト単位で取得(-h
を使うと単位がついて計算しづらくなるため避けています)SIZE_MB
:バイトをMBに換算- 条件分岐:容量が閾値を超えたかどうかで処理を分ける
このようにすることで、自動でディレクトリサイズを監視し、必要に応じてアラートを出すことができます。
注意点:シンボリックリンクやマウントポイントに注意
du
コマンドを使う際に気をつけたいのが、シンボリックリンクや別のディスクにマウントされたディレクトリです。
- シンボリックリンク(
ln -s
で作成したもの)は、リンク元のサイズを含めるかどうかで結果が変わることがあります。 - 異なるファイルシステムがマウントされている場合、
du
ではマウント先の容量までカウントされることもあるため、必要に応じてオプション--one-file-system
を使いましょう。
du -sh --one-file-system /home
まとめ
du -sh
コマンドは、Linuxでディレクトリの使用容量をすばやく確認するための強力なツールです。さらに、コマンドの出力を変数に代入することで、スクリプト内で動的に容量チェックを行うことも可能です。
この記事で紹介した内容を振り返ってみましょう。
du -sh
でディレクトリ容量を人間にわかりやすい形式で確認du -sh *
でサブディレクトリの容量を一覧表示du -sb
を使えばバイト単位で精密な数値を取得できる- 結果を変数に代入し、条件分岐や自動通知にも活用できる
ディスク容量の管理は、サーバーの健全な運用に欠かせない業務の一つです。今回紹介した du
コマンドの使い方をマスターして、効率的な運用に役立ててください。