10

Linux には、ファイルのサイズを表示する多くのプログラムがあり、ブロック単位で表示するプログラムもあれば、バイト単位で表示するプログラムもあります。しかし、ls -sh、lvs、dd bs=size などの人間が読める形式になると、kb、KB、mB、MB、K を表示したときに、それが 1024 の倍数か 1000 の倍数かをどのように判断するのでしょうか。 、Gなど。lvsのように大文字で区別するものもあれば、ddのように異なる文字で区別するものもありますが、これらの種類のものの一般的なルールはありますか?これまでのところ見つけることができません. ありがとう。

4

1 に答える 1

14

man unitsを見ると、2 種類の単位の説明が表示されます。10 進数と 2 進数。キロバイト (KB) やメガバイト (MB) などの 10 進単位は 1000 (10^3)​​ の倍数ですが、キビバイト (KiB) やメビバイト (MiB) などの 2 進単位は 1024 (2^10) の倍数です。

表示されている単位に KiB、MiB、GiB などのバイナリ プレフィックスが含まれている場合は、1024 であると確信できます。不明確な単位については、一般的な経験則:

  • ハード ドライブのサイズは 10 進数で表示されます。これは、メーカーがより大きく見えるようにするためです。したがって、ディスクに保存され、ネットワーク経由で転送されるファイルのサイズは、通常、これと一致します。
  • メモリ サイズはバイナリ単位でアドバタイズされます
  • データに関係のないもの (KHz 単位の周波数など) は常に 10 進数です。

Ubuntuは 2010 年に、Linux ディストリビューション全体で合理的に一貫しているように見えるユニットのポリシーを公開しましたが、保証はされていません。

  • 次の場合は base-10 を使用します。

    • ネットワーク帯域幅 (たとえば、6 Mbit/s または 50 kB/s)
    • ディスク サイズ (たとえば、500 GB のハード ドライブまたは 4.7 GB の DVD)
  • 次の場合は基数 2 を使用します。

    • RAM サイズ (例: 2 GiB RAM)

ファイル サイズには、次の 2 つの可能性があります。

  • base-10 と base-2 の両方を (この順序で) 表示します。Linux カーネルの例: 「2930277168 512 バイトのハードウェア セクター: (1.50 TB/1.36 TiB)」
  • base-10 のみを表示するか、base-10 と base-2 の間で決定する機会をユーザーに与えます (デフォルトは base-10 でなければなりません)。1

1 Kris Aviがコメントで指摘したように、このポリシーの前に開発された一部のコマンドライン ツールは、基数 2 の値のみを使用するが 10 進単位を示す場合があり、既存の解析スクリプトを壊さないようにするために変更されていない場合があります。

于 2016-05-02T22:48:32.863 に答える