du (Unix)
この項目「Du (Unix)」は翻訳されたばかりのものです。不自然あるいは曖昧な表現などが含まれる可能性があり、このままでは読みづらいかもしれません。(原文:英語版 "du (Unix)" 00:41, 8 July 2019 (UTC)) 修正、加筆に協力し、現在の表現をより自然な表現にして下さる方を求めています。ノートページや履歴も参照してください。(2020年3月) |
du
(disk usageの略称から)はファイルのスペース使用量、つまりファイルシステム上でディレクトリまたはファイルが実際に使用しているスペースを推定するために使われる標準的なUnixプログラム。
ターミナル内の du のスクリーンショット例 | |
作者 | デニス・リッチー |
---|---|
開発元 | ベル研究所 |
初版 | 1971年11月3日 |
対応OS | UNIX and Unix系 |
種別 | コマンド |
ライセンス | coreutils: GNU GPL v3 |
歴史
編集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年版「シェル及びユーティリティ」