从 free -m 命令获取单独的已用内存信息

从 free -m 命令获取单独的已用内存信息

作为命令的输出free -m,我得到以下内容:

             total       used       free     shared    buffers     cached
Mem:          2496       2260        236          0          5        438
-/+ buffers/cache:       1816        680
Swap:         1949         68       1881

我想仅获取已使用的内存(例如 2260)作为输出。我尝试了以下命令:

free -m | grep Mem | cut -f1 -d " " 

帮助我提高我的指挥能力。

我怎样才能得到它的百分比,比如 35%?

答案1

awk您无需使用单独的管道即可使用grep

awk '/^Mem/ {print $3}' <(free -m)

其中,记录/行将被过滤以查找以 开头的记录/行,并且打印Mem第三个字段/列 ( ) 以显示过滤后的记录。$3

答案2

或者使用 sed:

free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p'

另一个解决方案是:

free -m  | grep ^Mem | tr -s ' ' | cut -d ' ' -f 3

第二个解决方案的学分得到了这个邮政

答案3

至于显示为百分比的附加问题(基于 jasonwryan 的回答):

awk '/^Mem/ {printf("%u%%", 100*$3/$2);}' <(free -m)

通过将第三个字段除以第二个字段来获取百分比并作为整数打印(不向上舍入!)。

编辑:添加了双“%” printf(第一个转义了用于打印的文字字符)。

答案4

FNR =2是输出的第二行并{print $3}打印所使用的第三列

free -m | awk 'FNR == 2 {print $3}'

相关内容