du (Unix)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

出典: フリー百科事典『ウィキペディア(Wikipedia)』
du
Du unix output.png
ターミナル内のduのスクリーンショット例
作者 デニス・リッチー
開発元 ベル研究所
初版 1971年11月3日(48年前) (1971-11-03
対応OS UNIX and Unix系
種別 コマンド
ライセンス coreutils: GNU GPL v3
テンプレートを表示

dudisk usageの略称から)はファイルのスペース使用量、つまりファイルシステム上でディレクトリまたはファイルが実際に使用しているスペースを推定するために使われる標準的なUnixプログラム

歴史[編集]

duユーティリティが最初にでてきたのはAT&T UNIXのバージョン1である。GNU coreutilsにバンドルされているバージョンのduはTorbjorn Granlund、David MacKenzie、Paul EggertとJim Meyeringによって書かれた。[1]

仕様[編集]

デフォルトでは、Single UNIX Specification (SUS) は、duが現在のディレクトリに含まれる各ファイルとディレクトリに割り当てられたファイルスペースを表示することを仕様に定めている。 リンクはリンク先のものではなく、リンクファイルとしてのサイズを表示するだろう。ディレクトリの内容のサイズは期待通りに表示される。

duが報告するのは割り当てられたスペースであって絶対的なファイルのスペースではないため、duによって表示されるファイルシステム上のスペースの合計値は、ファイルが削除されたが、そのブロックはまだ解放されていない場合には、df英語版によって表示されるものとは異なる。また、ファイルシステムのデータブロックを割り当てる最小限(minfree)設定とスーパーユーザのプロセスは、合計ブロック数と、使用されているブロックと利用可能なブロックの合計値の間に不一致を作り出す。最小限(minfree)設定は通常合計ファイルシステムサイズの5%程度に設定されている。さらなる情報はcore utils faqを見よ。

使用方法[編集]

duは1つの引数をとり、それはduが動作するパス名を指定する。もし指定されなければ、現在のディレクトリが使われる。SUSはduが以下のオプションを取ることを規定している:

-a、デフォルトの出力に加えて、ディレクトリ以外の各エントリの情報も表示する。
-c, 他の引数によって見つかったディスク使用量の総計を表示する。
-d #、集計を行うべき深さ。-d 0は現在のレベルを集計し、-d 1はサブディレクトリを集計し、-d 2はサブサブディレクトリを、など。
-H、コマンドラインで指定されたリンク参照先のディスク使用量を計算する
-k、512バイトではなく、1024バイトの倍数でサイズを表示する。
-L、リンク参照先がどこであってもディスク使用量を計算する。
-s、現在のディレクトリの使用量の合計値のみを報告して、そこに含まれている各ディレクトリについては報告しない。
-x、パス名引数が指定されたデバイス上のファイルとディレクトリのみをたどる。

他のUnixとUnix-likeなオペレーティングシステムはさらなるオプションを追加していることがある。BSDとGNUのdu-hオプションを指定すると、適切なSI接頭辞を付けた単位を追加して(例えば10MB)、ユーザが読みやすいフォーマットでディスク使用量を表示する。

[編集]

ディレクトリの合計値(-s)をキロバイト単位(-k)で:

$ du -sk *
152304  directoryOne
1856548 directoryTwo

ディレクトリの合計値(-s)を人間が読みやすいフォーマットで(-h : バイト、キロバイト、メガバイト、ギガバイト、テラバイトペタバイト):

$ du -sh *
149M directoryOne
1.8G directoryTwo

現在のディレクトリにある隠しファイルも含んだすべてのサブディレクトリとファイルのディスク使用量(ファイルサイズでソート):

 $ du -sk .[!.]* *| sort -n

現在のディレクトリにある隠しファイルも含んだすべてのサブディレクトリとファイルのディスク使用量(ファイルサイズの逆順でソート):

 $ du -sk .[!.]* *| sort -nr

現在のディレクトリ直下の各サブディレクトリのウェイト(サイズ)(-d 1)を、最後に全体の合計値をつけて(-d)、すべて人間に読みやすいフォーマットで(-h):

 $ du -d 1 -c -h

あるいはGNUのduでは:

 $ du --max-depth=1 -c -h

ルートディレクトリ直下の各サブディレクトリのウェイト(サイズ)(-d 1と続く/)を、最後に全体の合計値をつけて(-d)、すべて人間に読みやすいフォーマットで(-h)、他のファイルシステムまでたどらない(-x)。/var、/tmp、または他のディレクトリがルートディレクトリとは別の記憶装置にある時に有用である。:

 $ du -d 1 -c -h -x /

あるいはGNUのduでは:

 $ du --max-depth=1 -c -h -x /

関連項目[編集]

参考文献[編集]

  • du: estimate file space usage – The Open Group基本仕様書第7号2018年版「シェル及びユーティリティ」

Manual pages[編集]