在 Bash 脚本中将字节值转换为 MB

在 Bash 脚本中将字节值转换为 MB

我编写了一个 bash 脚本来获取当前 Jjava 堆内存大小。我想将此值转换为 MB。以下是详细信息

freememory=$((heapmax - heapused))
echo $freememory
Remaining Memory is : $freememory bytes"

答案1

如果您想转换为“人类可读”的单位(如-h等实用程序使用的开关) dfdu那么请尝试numfmt例如。

$ echo 123456789 | numfmt --to=iec
118M

$ echo 123456789 | numfmt --to=iec-i
118Mi

$ echo 123456789 | numfmt --to=si
124M

答案2

这通常是您可以使用 bc 来做的事情。

echo "${freememory}/2^20" | bc

答案3

尝试使用一行 Python 代码来生成千字节到太字节的值:

$ python -c "导入 sys;从数学导入*;a=float(sys.argv[1]);\  
  m=int(round(log(a)/log(1000),3)); \
  打印(a,'is',a /(pow(1000,m)),('KMGT')[int(m)] +'B','free mem')“\
  $(sed -nr 's/^.*MemFree:[ \t\n]+([0-9]+).*$/\1000/p' /proc/meminfo)

...实际上,只需将字符附加到 KMGT 即可允许更大的数量。

行:

  1. 启动 python,导入 math 和 sys,将第一个参数放入
  2. 计算
  3. 打印结果
  4. 创建第一个参数,即 sys.argv[1] 中的内容

相关内容