如何仅用awk计算/proc/meminfo中MemTotal与MemFree的差值
解决方法
直接用awk的变量存储数值,最后在END模块计算差值即可,有两种常用写法:
写法一:按行内容匹配(更可靠,避免行序变化)
awk '/MemTotal/ {total=$2} /MemFree/ {free=$2} END {print total - free}' /proc/meminfo
- 匹配到
MemTotal行时,将第二列的内存值存入total变量 - 匹配到
MemFree行时,将第二列的内存值存入free变量 - 所有行处理完成后(
END块),计算并输出两者的差值
写法二:按行号匹配(贴合你之前的尝试,适用于前两行固定是MemTotal和MemFree的场景)
awk 'NR==1 {total=$2} NR==2 {free=$2} END {print total - free}' /proc/meminfo
- 第一行(
NR==1)读取MemTotal的数值存到total - 第二行(
NR==2)读取MemFree的数值存到free - 最后输出差值
这两种写法都能直接得到内存使用量的结果,无需手动计算。
内容的提问来源于stack exchange,提问作者ProSystem101
相关产品推荐
相关产品推荐

