mur*_*uru 19
您还可以阅读free
的信息来源,/proc/meminfo
:
~ head /proc/meminfo
MemTotal: 4039168 kB
MemFree: 2567392 kB
MemAvailable: 3169436 kB
Buffers: 81756 kB
Cached: 712808 kB
SwapCached: 0 kB
Active: 835276 kB
Inactive: 457436 kB
Active(anon): 499080 kB
Inactive(anon): 17968 kB
Run Code Online (Sandbox Code Playgroud)
在Python 中,例如:
with open('/proc/meminfo') as file:
for line in file:
if 'MemFree' in line:
free_mem_in_kb = line.split()[1]
break
Run Code Online (Sandbox Code Playgroud)
将在free_mem_in_kb
变量中以 KB 为单位为您提供可用内存。对于总内存类似的东西,您可以减去这些值(或将缓冲区、缓存等相加)。
您还可以创建文件中值的字典:
from collections import namedtuple
MemInfoEntry = namedtuple('MemInfoEntry', ['value', 'unit'])
meminfo = {}
with open('/proc/meminfo') as file:
for line in file:
key, value, *unit = line.strip().split()
meminfo[key.rstrip(':')] = MemInfoEntry(value, unit)
Run Code Online (Sandbox Code Playgroud)
meminfo['MemAvailable'].value
例如,然后使用 检索值。
Rin*_*ind 10
已用内存百分比(不包括缓冲区和缓存):
free | awk 'FNR == 3 {print $3/($3+$4)*100}'
Run Code Online (Sandbox Code Playgroud)
对于您添加的问题:“7.2 GB 以上”,但我认为百分比可能更灵活。
为了扩展这一点,同样可以用于“可用内存百分比”:
free | awk 'FNR == 3 {print $4/($3+$4)*100}'
Run Code Online (Sandbox Code Playgroud)
awk
是一个带有大量参数的模式扫描工具。FNR 是当前输入文件中的输入记录号。基本上是当前正在处理的行。因此,FNR 将扫描您想要的数字的第三行。$3 和 $4 指向第 3 和第 4 列。如果您想要数字本身,请使用:
free | awk 'FNR == 3 {print $3}'
free | awk 'FNR == 3 {print $4}'
Run Code Online (Sandbox Code Playgroud)
例子:
$ free
total used free shared buffers cached
Mem: 16419996 16144316 275680 0 447220 12589412
-/+ buffers/cache: 3107684 13312312
Swap: 16761852 38532 16723320
~$ free | awk 'FNR == 3 {print $3}'
3109056
~$ free | awk 'FNR == 3 {print $4}'
13311240
Run Code Online (Sandbox Code Playgroud)
如果你想要缓冲区和缓存:FNR=2。如果你想要交换,FNR=4。