我编写了一个 bash 脚本来获取当前 Jjava 堆内存大小。我想将此值转换为 MB。以下是详细信息
freememory=$((heapmax - heapused))
echo $freememory
Remaining Memory is : $freememory bytes"
答案1
如果您想转换为“人类可读”的单位(如-h
等实用程序使用的开关) df
,du
那么请尝试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 即可允许更大的数量。
行:
- 启动 python,导入 math 和 sys,将第一个参数放入
- 计算
- 打印结果
- 创建第一个参数,即 sys.argv[1] 中的内容