• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:unix(FreeBSD)でディレクトリ容量計算すると2倍になる)

unix(FreeBSD)でディレクトリ容量計算すると2倍になる

このQ&Aのポイント
  • Unix(FreeBSD)でのディレクトリ容量計算において、結果が2倍になる問題が発生しています。
  • ディレクトリ内全容量を調べるために使用している「du -s」コマンドは、TeraTermでは正しい値を取得できるが、PHPのexec()関数では結果が2倍になってしまいます。
  • この問題については、FreeBSDのバグとして報告されているものがありますが、原因や対処方法についてはまだ明確にされていないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

明示的に -k オプションを付けて実行してください。 dfコマンドは、 ・環境変数 BLOCKSIZE を設定している場合、その指定に従った単位で容量を返す ・環境変数 BLOCKSIZE が設定されていない場合、512Bytes(セクタ)単位の容量を返す ような仕様になっています。 おそらくログインしている環境では BLOCKSIZE=K が指定されていて、 PHPの実行環境では、BLOCKSIZE が指定されていないのでしょう。 明示的にオプション -k を付けて df を実行すれば、環境変数 BLOCKSIZE は無視して、キロバイト単位での容量を返します。

ikataro
質問者

お礼

ありがとうございます。 "du -sk" としたら正しく動きました。 -k オプションは私の持っているコマンド辞典にはないですね。 BSDのバグじゃなくてよかったです。助かりました。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

えぇと, 「困ったらマニュアルを見ればいい」んではないかな. 「man」って知ってます?

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

> BSDの本 一冊持っておくと便利なのを紹介しておきます。 Linux(RHEL) / FreeBSD / Solaris対応。

参考URL:
http://gihyo.jp/book/2008/978-4-7741-3349-2
ikataro
質問者

お礼

見てみます。 ありがとうございました。

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

見てるマニュアルも違うんじゃないでしょうか? http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=du&dir=jpman-6.2.2%2Fman§=0 とか原文なら http://www.freebsd.org/cgi/man.cgi で検索するのが楽です。

ikataro
質問者

お礼

なるほどその通りです。 unixはみな同じと思ってunixのマニュアルを買っていたのですが… BSDの本も必要ですね。ありがとうございました。

関連するQ&A