• 締切済み

lsコマンドで出てくるファイルのサイズとduコマンドを使ったときにでてくるファイルの使用状況との違いが分かりません。

ls -lコマンドで出てくるファイルのサイズとduコマンドを使ったときにでてくるファイルの使用状況との違いが分かりません。 ファイルの使用状況とはメモリの使用状況というイミなのかが確信が持てずにいます。 質問させていただければと思います。 どうかよろしくお願いします。

みんなの回答

回答No.2

ハードディスク上に、駐車場の白線のようなものが書いてあって そこにファイルが行儀良く駐車してあると考えるといいですね。 100台ぶんの白線の枠がある駐車場に車を停めるとして、 格納する車が全て2人乗りのコンパクトカーであっても100台までしか停められないし、 白線ぎりぎりの8人乗りワゴン車でも100台までです。 また、マイクロバスだと2台ぶんのスペースを使います。 lsがファイルの実サイズで、duが入れ物によってかわる占有サイズです。

  • dummyplug
  • ベストアンサー率58% (134/230)
回答No.1

ファイルシステム(ディスク)上でファイルがどのように管理されているのか、というのと関係があります。 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など)に格納するときに使われるブロックの数で、ファイルシステムはこのブロックという単位でファイルを管理している関係上、実際のファイルシステムでどれだけの容量を消費しているかという観点で意味のある数字です。 ちなみに、いずれもメモリとは関係がありません。

関連するQ&A

  • DUとLSの表示の差

    ファイルのパーミッション等が下記の場合が関係しているのか不明ですがDUコマンドとLSコマンドで示されるDiskの使用量が一致しないのですが、理由を教えていただけませんか? % cd test001 % ls -l total 944 -rw-r-lr-- 1 own grp 524288000 Oct 15 09:12 File0 -rw-r-lr-- 1 own grp 524288000 Oct 15 09:11 File1 % % du 946 . % cd ../test002 % ls -l total 2049056 -rw-r-lr-- 1 own grp 524288000 Oct 17 14:12 File0 -rw-r-lr-- 1 own grp 524288000 Oct 12 21:16 File1 % % du 2049056 . DUの結果とLS -l で示される結果は一致しているのですが、ファイルサイズ(ls -lで示される値)の合計と一致しないのです。 OSはSolaris8です、よろしくお願いします。

  • Linuxコマンドの『du』について

    宜しくお願いします。 アップロードした画像ファイルの容量を調べたく、サーバにroot権限でログインし、Linuxコマンドの 『du -b imgfile』 で調べたのですが、FFFTPで見た容量と、Linuxコマンドの 『ls -l imgfile』 で調べた容量と誤差が出ます。具体的には、duコマンドで調べた容量が 24576Byte なのに対し、同じファイルをFFFTPで見たのと、lsコマンドで調べた場合は、 22019Byte という具合に、誤差が出ます。 容量の大きなファイル程、その差も大きくなります。 この問題を解決する方法をご存知でしたら、是非ご教授下さい。 宜しくお願い致します。

  • ディスクの使用サイズ表示の違い

    UNIXコマンドであるディレクトリ配下のディスクの使用サイズを表示させようと思っています。 ・du -k ・find -lsでファイルサイズを足す(ファイル、ディレクトリ、シンボリックリンクを含む) ・ls -Rでファイルサイズを足す(ファイル、ディレクトリ、シンボリックリンクを含む) 上記3つで行いましたが、全て違う結果になりました。 なぜこの様な事になるのでしょうか? よろしくお願いいたします。

  • lsコマンドについて

    linux 初心者です。lsコマンドの-sをしようした場合ファイルのサイズがわかると言うことですが、まずファイルの詳細がわかるという-lで調べたらサイズ5994byteと出ていたのですが、次に-sで調べたら8(kbyte)と出てしまうのですがどちらが正しいのでしょうか?またどうしてこのような結果が出てきたのかわかる方いたらご教授よろしくお願いします。

  • duコマンドの置換えについて

    こんばんは。 linux初心者で困っています。助けてください。 ディレクトリのサイズを得たいのですが、 組み込みなので、system関数でのduコマンドを実行すると、 エラーなどが拾えないため使用したくありません。 どうやったら、ディレクトリのサイズを得ることができますか? 具体的な設定方法をご教授願います。 よろしくお願い致します。

  • コマンド ls について

    linux初心者です。 調べたのですが、出てこなかったので知っている方がいらっしゃったら。 linux コマンドで ls というものがあると思いますが、オプションで -la をつけた際に表示される "." ".." の2つのディレクトリ??はいったい何を意味している(というより何?)のでしょうか。 パーミッションも付与されているみたいなので、ファイルかディレクトかなのでしょうか? ls で検索しても出てこなかったので(manも読みましたがそれらしいものはなかったので)、ちょっと無知な感じですがご回答よろしくお願いいたします。

  • linux duコマンドで困っています。

    linuxでディレクトリ容量を計算したいので duコマンドを使うのですが、10分以上反応がありません。 ちなみにディレクトリに10万以上のファイルがあります。総計を知りたいのですが、良いオプションやコマンドがあれば教えてください。 du -hcx /directory このコマンドでは駄目 個別ファイルの容量は知りたくないのでcオプションを付けています。 本当に困っています。 何卒よろしくお願いいたします。

  • lsコマンドについて。

    lsコマンドについて。 $lsを実行したときに、結果は各ファイル名が改行で区切られて出力されると思うのですが、コンソールにはスペースかタブで区切られているように表示されます。 これはシェルがlsコマンドの結果に含まれる改行をスペースなどに変えてコンソールに出力しているからなのでしょうか。 よろしくお願いします

  • duコマンド+アルファで大きなファイルを検索

    以下のコマンドでディスク内の大きなファイルを検索することはできるのですが、ディレクトリも検索されてしまう為、ファイルかどうか判断するのは自分で見なければなりません。 --------------------------------------------------------------- du -a `ls -la /| egrep -wv "backup|^l[rwx-]+|skel|\.|\.\.|^total|proc" | awk '{print $NF}'` | sort -nr | head -30 出力された内容がディレクトリなら偽として、大きなファイルだけをしりたいのです。 一度ファイルに出力してからwhileを使って一行ずつifコマンドでディレクトリなら偽として出力していけばできるのですが。 ------------------------------------------------------------------ while read line ;do if [ -f "$line" ] ; then echo "$line" ; fi ; done < list これと同じ結果をファイルを作成せずにやりたいのです。 while分の最後のdoneにファイルをリダイレクトさせる要領で while read line ;do if [ -f "$line" ] ; then echo "$line" ; fi ; done < `printf "$list\n"` としてもうまくゆきません。 どうしたらファイルを作成せずにディスク内の大きなファイルだけを検索する事ができますでしょうか。

  • lsコマンドで表示するファイルの更新日付について

    お世話になります。 現在RedHatLinux AS2.1を使用しております。 ディレクトリの情報(ファイル名、ファイルサイズ、更新日付)を毎日取得して日々差異がないか確認しているのですが、 更新日付が昨日は 11月 10 2007 と表示していたのに、今日になって、 11月 10 10:30 と年のところが時刻になっていました。 11月10日なので、勿論今日(5/21)更新した訳でもなく、ファイルサイズも同じなので年の表示が時刻に変わっただけだと思います。 コマンドは、 ls -lh|cut -b 35- と35バイト目からだけを表示するようにしています。 lsコマンドで表示する更新日付は昨年までのファイルについては、年を表示して、同じ年度(2008年)のものは時刻が表示するものだと思っておりましたが、違ってるのでしょうか?コマンドがマズイですかね・・・。 結構基本的な事だと思うのですが、ネットで探してもなかなか見つからずここで質問させていただきます。 どうかよろしくお願いします。