Linuxのduコマンドとは?ディレクトリ容量を確認する方法と便利なオプションを徹底解説
生徒
「Linux(リナックス)を使っているのですが、ハードディスクの空き容量が少なくなってきました。どのディレクトリ(フォルダ)が容量をたくさん使っているのか調べる方法はありますか?」
先生
「それなら、du(ディーユー)コマンドを使うのが一番ですよ。Disk Usage(ディスク・ユージェージ:ディスク使用量)の略で、ファイルやディレクトリのサイズを簡単に確認できる命令です。」
生徒
「コマンドラインで数字がいっぱい出てくると難しそうですが、初心者でも使いこなせますか?」
先生
「もちろんです!読みやすい単位で表示するオプションや、特定の深さまで表示する方法を覚えれば、視覚的にどこが重いのかすぐ分かります。基本から丁寧に解説しますね。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. duコマンドとは?ディスク使用量を確認する基本
duコマンドは、読み方はdu(ディーユー)といい、Linux(リナックス)やUnix(ユニックス)系のオペレーティングシステムで、ファイルやディレクトリが占有しているディスク容量を表示するための標準的なツールです。
Windows(ウィンドウズ)であれば、フォルダを右クリックして「プロパティ」からサイズを確認しますが、Linuxのターミナル(シェル環境)ではこのduコマンドを入力することで、瞬時にサイズを計算して表示してくれます。サーバーの運用や、プログラミング中のストレージ管理には欠かせない知識です。
特にbash(バッシュ)やzsh(ゼットエスエイチ)といったシェルを利用している際に、どのデータがストレージを圧迫しているかを特定するのに非常に役立ちます。初心者の方はまず「duはサイズを測るもの」と覚えておきましょう。
2. duコマンドの基本的な使い方
まずは、オプションを何もつけずに実行してみましょう。デフォルトでは、カレントディレクトリ(現在いる場所)とその配下にあるすべてのディレクトリのサイズを表示します。数値の単位はキロバイト(KB)として出力されることが一般的です。
以下の例では、現在のディレクトリにあるデータの容量を表示しています。
du
4 ./Documents
8 ./Downloads
16 .
左側の数字が容量を表し、右側が対象のディレクトリ名です。最後に表示されるドット(.)は現在のディレクトリ全体の合計サイズを意味します。しかし、これだけでは数字が大きすぎると直感的に何ギガバイトなのか分かりにくいですよね。そこで次のステップでは読みやすくする方法を学びます。
3. 人間に読みやすい単位で表示する(-hオプション)
duコマンドを使いこなす上で最も重要なオプションが -h です。これは human-readable(ヒューマン・リーダブル:人間が読める形式)の略称です。これを使うことで、単位が自動的にK(キロバイト)、M(メガバイト)、G(ギガバイト)へと変換され、一目でサイズが理解できるようになります。
初心者の方は、常に du -h と打つ癖をつけておくと、計算の手間が省けて非常に便利です。以下のコマンド実行例を見てみましょう。
du -h
4.0K ./Documents
1.2M ./Downloads
1.3M .
このように、「1.2M」と表示されれば「約1.2メガバイトなんだな」と直感的に理解できます。システム管理において、大きなログファイルやバックアップファイルを探す際には必須のテクニックとなります。
4. ディレクトリの合計サイズだけを表示する(-sオプション)
標準のduコマンドを実行すると、サブディレクトリの中身までずらりと表示されてしまい、画面が埋め尽くされてしまうことがあります。特定のディレクトリがトータルでどれくらいのサイズなのか「合計」だけを知りたい場合は、-s オプションを使用します。
sは summary(サマリー:要約)を意味します。前述の -h と組み合わせて -sh と使うのが一般的です。例えば、ホームディレクトリ全体の容量を知りたい場合は以下のように入力します。
du -sh .
1.3M .
特定のフォルダを指定して実行することも可能です。例えば「/var/log」というシステムログが保存されている場所を調べたい時は、以下のように指定します。パスを指定する方法はLinux操作の基本ですので、一緒に覚えておきましょう。
5. 表示する階層の深さを指定する(--max-depthオプション)
「現在のディレクトリ直下のフォルダごとの容量は知りたいけれど、そのさらに奥深くにある細かいファイルの情報はいらない」という状況はよくあります。そのような時は、--max-depth オプションが非常に有効です。読み方はmax-depth(マックス・デプス)で、最大深度を意味します。
例えば、直下の階層だけを表示したい場合は --max-depth=1 と指定します。これにより、各ディレクトリの合計値が見やすく一覧表示されます。
du -h --max-depth=1
4.0K ./Documents
1.2M ./Downloads
8.0K ./Pictures
1.3M .
このコマンドを使えば、どのプロジェクトフォルダやどのユーザーデータが容量を食っているのかが、一瞬で把握できます。深い階層構造を持つシステムを調査する際には、効率的なトラブルシューティングに役立ちます。
6. 特権ユーザー(root)で実行が必要な場合
Linuxでは、セキュリティの観点から、一般ユーザーが閲覧できないディレクトリが存在します。例えば、システム全体の重要な設定ファイルや他人のデータなどは、通常の権限では Permission denied(パーミッション・ディナイド:許可が拒否されました)というエラーが出てしまい、正しく容量を計算できません。
システム全体のディスク使用量を調査する場合は、管理者権限(特権ユーザー)である root(ルート)権限を利用して実行する必要があります。sudo コマンドを頭に付けることで、一時的に管理者として実行できます。読み方はsudo(スードゥー または スーデュー)です。
sudo du -sh /root
12M /root
ルートユーザーで実行する際は、誤って重要なファイルを削除したり動かしたりしないよう、注意深くコマンドを入力することが大切です。しかし、duコマンド自体は情報を表示するだけ(読み取り専用に近い動作)なので、比較的安全に実行できる調査用コマンドと言えます。
7. ファイルも含めて容量を表示する(-aオプション)
デフォルトのduコマンドは、基本的に「ディレクトリ」のサイズを対象にします。しかし、ディレクトリの中にある個別の「ファイル」ごとの容量もすべて表示したい場合には、-a オプションを使います。aは all(オール:すべて)の意味です。
これを使うと、テキストファイルや画像ファイル、スクリプトファイルなどの個別のサイズが一覧で出力されます。特定の巨大な動画ファイルやログファイルを特定したい時に便利です。
du -ah
4.0K ./Documents/memo.txt
1.2M ./Downloads/ubuntu.iso
4.0K ./Pictures/logo.png
1.3M .
ファイル数が多いディレクトリで実行すると、出力結果が非常に長くなるため、前述した --max-depth や、後述する sort コマンドとの組み合わせが推奨されます。
8. 容量の大きい順に並び替える便利なテクニック
duコマンドの結果を、サイズの大きい順に並び替える(ソートする)と、調査効率が格段にアップします。これには「パイプ」という仕組みを使います。パイプは | という記号で、あるコマンドの結果を別のコマンドに渡す役割を持っています。
並び替えには sort(ソート)コマンドを使います。-r オプションで逆順(大きい順)、-h オプションで単位を考慮した並び替えを指定します。
du -h --max-depth=1 | sort -rh
1.3M .
1.2M ./Downloads
8.0K ./Pictures
4.0K ./Documents
この一行を覚えているだけで、ディスクがいっぱいになった緊急時に「犯人のファイルやディレクトリ」を即座に見つけることができます。まさにLinux初心者が中級者へステップアップするための魔法の呪文です。シェルスクリプトなどで自動監視を行う際にも応用されるテクニックです。
9. 空き容量を確認するdfコマンドとの違い
よくduコマンドと混同されるものに df(ディーエフ)コマンドがあります。読み方はdf(ディーエフ)で、Disk Free(ディスク・フリー:ディスクの空き)の略です。初心者のうちは、この二つの使い分けをしっかり理解しておきましょう。
- duコマンド: 特定のディレクトリやファイルが「どれだけ使っているか」を調べる。内部調査用。
- dfコマンド: ハードディスク全体やパーティションごとの「空き容量がどれくらいあるか」を調べる。全体把握用。
まずは df -h でディスク全体の残りを確認し、残りが少なければ du コマンドで原因となっている場所を特定する、というのがLinuxエンジニアの標準的な流れです。どちらも非常に重要なコマンドですので、セットで覚えておくと良いでしょう。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
Linuxシステムを効率的に運用・管理する上で、duコマンド(Disk Usage)の習得は避けて通れない重要なステップです。サーバーのストレージ容量が不足した際や、巨大なログファイルがディスクを圧迫している際、どのディレクトリが原因なのかを迅速に特定できる能力は、エンジニアとしての実務スキルに直結します。
これまでの内容を振り返ると、duコマンドには多くの便利なオプションが存在することが分かりました。特に、人間が直感的に理解できる単位で表示する -h オプションや、ディレクトリの合計サイズのみを表示する -s オプションは、日常的な調査で最も頻繁に利用されます。また、--max-depth オプションを活用することで、階層の深いファイルシステムでも視認性を保ちながら調査を進めることが可能です。
さらに、実務的なテクニックとして、sort コマンドと組み合わせたパイプライン操作を覚えることで、容量の大きい順に並び替えを行い、問題のある箇所を即座に発見できるようになります。Linuxのファイル操作やディスク管理において、duコマンドは単なるコマンド以上の「調査の武器」となります。
最後に、全体像を把握するための df コマンドと、詳細を調査するための du コマンドの使い分けを意識しましょう。これらを適切に組み合わせることで、システムの安定稼働を支えるストレージ管理が完璧に行えるようになります。以下に、本記事で学んだ内容を凝縮したサンプルプログラム(シェルスクリプト形式)と、先生と生徒による振り返りの会話を掲載します。
ディスク使用量調査の自動化サンプル(シェルスクリプト)
学んだコマンドを組み合わせて、特定のディレクトリ配下で容量を消費している上位5つの項目を表示する簡単なスクリプト例です。このように自動化することで、定期的なチェックが容易になります。
#!/bin/bash
# ディスク使用量チェック用サンプルスクリプト
TARGET_DIR="/var/log"
echo "Checking disk usage for: $TARGET_DIR"
echo "--------------------------------------"
# 特権が必要なディレクトリを想定しsudoを利用
# 容量の大きい順にソートして上位5件を表示
sudo du -ah "$TARGET_DIR" | sort -rh | head -n 5
echo "--------------------------------------"
echo "Check completed."
生徒
先生、duコマンドの使い方、とてもよく分かりました!今まで「Disk Full」のエラーが出るとパニックになっていましたが、これからは冷静に du -sh や --max-depth を使って犯人探しができそうです。
先生
それは頼もしいですね。特に -h オプションを忘れないようにしましょう。キロバイト単位の数字を頭の中でギガバイトに変換するのは大変ですから、コンピュータに計算させるのが一番です。
生徒
はい!あと、sort -rh と組み合わせる技がすごく便利だと感じました。パイプ | を使うことで、一気に「重い順」に見えるのが魔法みたいです。これって、他のコマンドでも応用できるんですか?
先生
その通り!パイプはLinuxの醍醐味です。例えば、特定のファイル名だけを抽出する grep と組み合わせたり、結果をファイルに保存する >(リダイレクト)を使ったりと、活用の幅は無限大ですよ。
生徒
なるほど。まずは df -h で全体の空きを見て、怪しい場所を du -sh * で絞り込んでいくという流れを習慣にします。権限がないときは sudo を付けるのも忘れないようにしますね!
先生
完璧な理解です。実務では /var/log や /tmp、あるいはユーザーのホームディレクトリが肥大化しやすいので、まずはそのあたりから調査の練習をしてみると良いでしょう。応援していますよ!