Linux中有许多程序会显示文件的大小,其中一些以块为单位,一些以字节为单位。但是当涉及到一些人类可读的形式时,比如 ls -sh、lvs、dd bs=size 等等,当我们看到一个 kb、KB、mB、MB、K 时,我们如何确定它是 1024 还是 1000 的倍数, G 等。有些用 lvs 之类的大写来区分它们,有些用 dd 之类的不同字符来区分,但是,这些事情有没有一般规则,因为我到目前为止找不到。谢谢。
问问题
4776 次
1 回答
14
如果您查看man units,您会看到对这两种类型的单位的描述。十进制和二进制。千字节 (KB) 和兆字节 (MB) 等十进制单位是 1000 (10^3) 的倍数,而千字节 (KiB) 和兆字节 (MiB) 等二进制单位是 1024 (2^10) 的倍数。
如果显示的单位包含二进制前缀,如 KiB、MiB、GiB,您可以确定它是 1024。对于不明确的单位,一般的经验法则:
- 硬盘驱动器尺寸以十进制单位进行广告宣传,因为制造商喜欢让它们看起来更大。因此,存储在磁盘上并通过网络传输的文件的大小通常与此一致。
- 内存大小以二进制单位公布
- 任何与数据无关的内容(以 KHz 为单位的频率等)始终为十进制
Ubuntu在 2010 年为其单位发布了一项政策,该政策似乎在 Linux 发行版中相当一致,但不能保证:
将 base-10 用于:
- 网络带宽(例如,6 Mbit/s 或 50 kB/s)
- 磁盘大小(例如,500 GB 硬盘或 4.7 GB DVD)
将 base-2 用于:
- RAM 大小(例如,2 GiB RAM)
对于文件大小,有两种可能性:
- 显示 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在评论中指出的,在此政策之前开发的一些命令行工具可能仅使用 base-2 值但表示十进制单位,并且可能没有更改以避免破坏现有的解析脚本。
于 2016-05-02T22:48:32.863 回答