相关疑难解决方法(0)

将字节数转换为人类 KiB MiB 等的标准工具;喜欢 du, ls1

是否有标准工具可以将字节的整数计数转换为人类可读的最大可能单位大小计数,同时将数值保持在 1.00 和 1023.99 之间?

我有我自己的 bash/awk 脚本,但我正在寻找一个标准工具,它可以在许多/大多数发行版中找到......更普遍可用的东西,理想情况下有简单的命令行参数,和/或可以接受管道输入。

以下是我正在寻找的输出类型的一些示例。

    1    Byt  
  173.00 KiB  
   46.57 MiB  
    1.84 GiB  
   29.23 GiB  
  265.72 GiB  
    1.63 TiB  
Run Code Online (Sandbox Code Playgroud)

这是bytes-human脚本(用于上述输出)

awk -v pfix="$1" -v sfix="$2" 'BEGIN { 
      split( "Byt KiB MiB GiB TiB PiB", unit )
      uix = uct = length( unit )
      for( i=1; i<=uct; i++ ) val[i] = (2**(10*(i-1)))-1
   }{ if( int($1) == 0 ) uix = 1; else while( $1 < val[uix]+1 ) uix--
      num = $1 …
Run Code Online (Sandbox Code Playgroud)

utilities text-processing units

131
推荐指数
6
解决办法
6万
查看次数

为什么 Linux 显示的内存比我实际安装的内存多或少?

我知道交换 - 这个问题不是关于那个。在 dmesg 中,Linux (x86-64) 内核告诉我我有多少内存:

[    0.000000] Memory: 3890880k/4915200k available (6073k kernel code, 861160k absent, 163160k reserved, 5015k data, 1596k init)
Run Code Online (Sandbox Code Playgroud)

cat /proc/meminfo 告诉我我有

MemTotal:        3910472 kB
Run Code Online (Sandbox Code Playgroud)

根据我的计算,我认为我应该正好有 4*1024*1024=4194304k RAM。这是方式比上面dmesg的行第二个数字小!

所有这些不同的数字是怎么回事?

顺便说一下,uname -a输出:

Linux pavilion 3.2.2-1.fc16.x86_64 #1 SMP Thu Jan 26 03:21:58 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

linux memory linux-kernel

12
推荐指数
1
解决办法
1万
查看次数

VM 中的“错误”总内存

我在 VMware Fusion 10.1.1(在 High Sierra)中运行了几个内核为 4.9.0-5-amd64 的 Debian 9.3 虚拟机。

我担心的是 Free 中的总内存不能正确反映我为多个 VM 预留的内存。

作为测试,我为 VM 预留了 2GB 的空间,但free -m只显示了 1986MB:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1986          51        1864           1          70        1825
Run Code Online (Sandbox Code Playgroud)

或没有-m:

$ free 
              total        used        free      shared  buff/cache   available
Mem:        2033760       52264     1909584        1108       71912     1869628
Swap:        999420           0      999420
Run Code Online (Sandbox Code Playgroud)

调试情况我也查看/proc/meminfo并发现了这一点:

$ egrep "MemTotal|DirectMap2M" /proc/meminfo
MemTotal:        2033760 kB
DirectMap2M:     2054144 kB
Run Code Online (Sandbox Code Playgroud)

所以实际上 DirectMap2M 反映的是 2GB;为什么有 …

memory debian proc

6
推荐指数
1
解决办法
3610
查看次数

标签 统计

memory ×2

debian ×1

linux ×1

linux-kernel ×1

proc ×1

text-processing ×1

units ×1

utilities ×1