Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxのduコマンド完全ガイド:ディスク使用量を効率的に分析する便利な使い方

Linuxのduコマンド完全ガイド:ディスク使用量を効率的に分析する便利な使い方

duは、Linuxに標準で搭載されているコマンドラインツールで、ディレクトリやファイルが占有しているディスク容量を報告します。「disk usage(ディスク使用量)」の略であるduは、コマンドライン上でディスク容量を解析するための最も基本的かつ重要なツールです。

基本的な使い方

du /path/to/directory

duコマンドにディレクトリを指定して実行すると、その配下にある各ディレクトリが消費しているディスク容量を網羅的に解析できます。各ディレクトリが順番に標準出力へ表示されるため、大規模なディレクトリやシステム全体をスキャンした場合には、数万行もの出力が生成され、処理にもかなりの時間がかかることがあります。そのため、実際には後述するオプション(フラグ)を組み合わせて使うのが一般的です。これらのオプションは互いに自由に組み合わせられますが、意味が矛盾する一部の組み合わせは同時に指定できません。

出力の制御

Linuxのduコマンド完全ガイド:ディスク使用量を効率的に分析する便利な使い方
du -c

duの出力の末尾に、スキャンしたディレクトリ全体の合計ディスク使用量を示す行を追加して表示します。

du -s

指定したディレクトリの合計使用量のみをサマリーとして表示します。集計が完了するまで何も出力されません。

du > du-report.txt

コマンドラインに慣れた方ならお馴染みですが、リダイレクトを使うと実行結果をテキストファイルに保存できます。この例では、カレントワーキングディレクトリに「du-report.txt」という名前のファイルとして結果が出力されます。

du | less

パイプを使って表示結果をlessエディタに渡すことで、ナビゲーションショートカットを使いながら読みやすくスクロールできる形式になります。大量の出力を確認する際に非常に便利です。

サイズ表示の変更

Linuxのduコマンド完全ガイド:ディスク使用量を効率的に分析する便利な使い方

特定の単位を指定した場合、ファイルサイズは概ね切り上げ・切り捨てられて表示される点に注意してください。たとえば、-mオプションを使用すると、4KBのファイルは「0MB」と表示され、750KBのファイルは「1MB」と表示されます。

du -h

「人間が読みやすい(human readable)」形式で表示します。標準的なブロックサイズではなく、KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)といった適切な単位でサイズが表示されます。最もよく使われるオプションの一つです。

du -k

ブロック数を1024バイト(1キロバイト)単位で表示します。

du -m

ブロック数を1,048,576バイト(1メガバイト)単位で表示します。

du -g

ブロック数を1,073,741,824バイト(1ギガバイト)単位で表示します。

ファイルやシンボリックリンクを含める

Linuxのduコマンド完全ガイド:ディスク使用量を効率的に分析する便利な使い方
du -L

コマンドラインやファイル階層内のシンボリックリンクを辿って(「参照解除」して)計算します。このオプションを付けない場合、シンボリックリンク自体が占める容量(通常はファイルシステムの最小サイズ)のみが報告され、リンク先のディレクトリツリーの実際のサイズは反映されません。

du -a

ディレクトリだけでなく、すべてのファイルについてもディスク使用量を表示します。

du /path/to/file.txt

コマンドで指定した特定のファイル1つだけのディスク使用量を表示します。

ファイル・ディレクトリ・リンクの除外

Linuxのduコマンド完全ガイド:ディスク使用量を効率的に分析する便利な使い方
du -X FILE

指定したファイルに記述されたパターンのいずれかに一致するファイルを除外します。

du --exclude="*.o"

指定したパターンに一致するファイルやサブディレクトリを除外します。この例では、「*.o」という文字列を含むすべてのディレクトリがスキップされます。ここで使えるのは正規表現ではなくシェルのパターンである点に注意してください。使用できる制御文字は、0文字以上の任意の文字列に一致する「*」と、任意の1文字に一致する「?」のみです。除外されたファイルはディレクトリサイズの計算から除かれ、-aオプションと併用した場合は出力結果からもスキップされます。

du --threshold=SIZE

SIZEが正の値の場合はそれより小さいエントリを、負の値の場合はそれより大きいエントリを除外します。SIZEは整数で、任意の単位を付けることができます。たとえば--threshold=1MBと指定すると、1メガバイト(1000^2バイト)未満のすべてのファイルがスキップされます。単位としては、1024の累乗を表すK、M、G、T、P、E、Z、Y(キビバイト、メビバイト、ギビバイトなど)や、より一般的な1000の累乗を表すKB、MB、GB、TBなど(キロバイト、メガバイト、ギガバイトなど)が利用可能です。du --threshold=1GBのようなコマンドは、システム上の大きなファイルを見つけ出すのに非常に役立ちます。

du -d N

スキャンする最大深度をN階層に設定します。このオプションには任意の正の整数を指定でき、指定したディレクトリからN個下のサブディレクトリまでをスキャンします。それより深いサブディレクトリが存在しても個別にはスキャンされず、その値は上位フォルダの合計に含まれます。-d 0を指定すると、-sオプションと同じ結果になります。

具体例を挙げましょう。「dir1/dir2/dir3/dir4」というディレクトリパスがあり、親ディレクトリ1つとサブディレクトリ3つが含まれているとします。du -d 2 dir1を実行すると、dir3までスキャンされます。dir4は個別には表示されませんが、dir4内のファイルはdir3のサイズに含まれて計算されます。

まとめ:duをパイプで組み合わせる

duコマンドは、他のコマンドと組み合わせることで真価を発揮します。たとえば次のコマンドを見てください。

du -a / | sort -n -r | head -n 10

このコマンドは、システム全体のファイルシステムを検索し(du -a /)、結果をサイズ順に並べ替え(sort -n -r)、上位10件だけを表示します(head -n 10)。要するに、マシン上で最も容量を消費しているファイルトップ10を一瞬で把握できるショートカットなのです。duをパイプで他のコマンドと連携させれば、さらに実用的な結果を得ることができます。日頃のディスク管理に、ぜひ活用してみてください。

  1. Linuxの「echo」コマンドとは?基本構文から実用的な活用例まで徹底解説

    Linuxを始めたばかりの方でも、長年Linuxデスクトップを使い続けている方でも、一見すると意味が分かりにくいコマンドがいくつか存在します。特にコマンドラインに触れる機会が少なかった方にとってはなおさらでしょう。しかし、Linuxやその他Unix系OSの真の力は、まさにそのコマンドラインの中にこそ秘められています。 その代表格とも言えるのが、古くから親しまれてきたechoコマンドです。一見すると何の役に立つのか分かりませんが、仕組みを理解してみると、意外なほど便利なコマンドであることが分かります。 echoコマンドは何をするもの? echoのマニュアルページを見ても、詳細な説明はほとんどあ

  2. Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現

    Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです