- 締切済み
lsコマンドで出てくるファイルのサイズとduコマンドを使ったときにでてくるファイルの使用状況との違いが分かりません。
ls -lコマンドで出てくるファイルのサイズとduコマンドを使ったときにでてくるファイルの使用状況との違いが分かりません。 ファイルの使用状況とはメモリの使用状況というイミなのかが確信が持てずにいます。 質問させていただければと思います。 どうかよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- superside0
- ベストアンサー率64% (461/711)
ハードディスク上に、駐車場の白線のようなものが書いてあって そこにファイルが行儀良く駐車してあると考えるといいですね。 100台ぶんの白線の枠がある駐車場に車を停めるとして、 格納する車が全て2人乗りのコンパクトカーであっても100台までしか停められないし、 白線ぎりぎりの8人乗りワゴン車でも100台までです。 また、マイクロバスだと2台ぶんのスペースを使います。 lsがファイルの実サイズで、duが入れ物によってかわる占有サイズです。
- dummyplug
- ベストアンサー率58% (134/230)
ファイルシステム(ディスク)上でファイルがどのように管理されているのか、というのと関係があります。 ls -lで表示できるファイルのサイズというのはそのファイルに入っている論理的な意味でのバイト数です。っていうとわかりにくいですが、例えば1文字入っているファイルなら1(バイト)と表示されるでしょうし、10文字なら10でしょう。 duで見えるのも同じくファイルサイズなんですが、ブロックという単位で表示します。ディスク上のファイルは1バイトのファイルといえど1バイトだけを占めているわけではないです。1ブロックの領域を使うことになります。1ブロックの大きさはシステムによって違いますが例えば1024バイトだとすると、ファイルとして1バイトでも100バイトでも1024バイトでもみんな同じ1ブロックをディスク上で占めることになります。 何でそんなことになっているかというのは説明し出すときりがないのでざっくり言うと、管理をしやすくするためと読み書きの速度を高めるためです。 例えば1ブロックが1024バイトだとすると、こんな関係があります。 ファイルサイズ1バイト→ブロック数1ブロック ファイルサイズ100バイト→ブロック数1ブロック ファイルサイズ1024バイト→ブロック数1ブロック ファイルサイズ1025バイト→ブロック数2ブロック つまり、ファイルサイズを1024で割った数だけのブロックが使われ、さらに余りがあったらその余りを格納するためにもう一ブロック使います。 ls -lで見るファイルサイズはそのファイルの論理的な意味でのバイト数で、ユーザがそのファイルの内容を考えたときに自然に対応する数字です。 一方で、duで見るブロック数はそのファイルをファイルシステム(HDDなど)に格納するときに使われるブロックの数で、ファイルシステムはこのブロックという単位でファイルを管理している関係上、実際のファイルシステムでどれだけの容量を消費しているかという観点で意味のある数字です。 ちなみに、いずれもメモリとは関係がありません。