Luc*_*uce 3 command-line bash ram
我想编写一个脚本来定期检查我的 RAM 使用情况,然后计算其最大值。
要计算已用内存,我有两个选择,通过neofetch
或free -m
的输出给出$ free -m
:
total used free shared buff/cache available
Mem: 15839 4169 7630 794 4039 10555
Swap: 2047 0 2047
Run Code Online (Sandbox Code Playgroud)
因此,我通过管道传输输出,$ free -m | grep Mem | awk '{print ($3/1024)}'
结果为4.07324
.
现在,如果我执行类似于$neofetch
输出的操作$ neofetch | grep -i Memory | awk '{print ($2/1024)}'
,我得到的输出为4.84668
因此,这 2 个输出不匹配,应该考虑哪一个来检查实际 RAM 使用情况?如果重要的话,我有一个 4GB GTX1650 运行 Nvidia 驱动程序,并且53MB
在通过检查时消耗 RAM$ nvidia-smi
我能想到的一种可能的情况是,哪里$ neofetch
给了我已用内存和共享内存,因为
$ free -m | grep Mem | awk '{print (($3+$5)/1024)}'
和
$ neofetch | grep -i Memory | awk '{print ($2/1024)}'
彼此非常接近 (4.85547
和4.86035
)
但我的问题仍然是,哪些内存值值得信任?
我建议使用free -m
orcat /proc/meminfo
作为您的内存使用来源。这些数字直接来自内核。
这里,使用的内存数量计算如下:
# used = total - free - buffers/cache
Run Code Online (Sandbox Code Playgroud)
Neofetch 计算内存使用情况cat /proc/meminfo
,正如您所猜测的,它显示已使用的内存,包括“共享”部分:(源代码,第 2679 行):
# MemUsed = Memtotal + Shmem - MemFree - Buffers - Cached - SReclaimable
Run Code Online (Sandbox Code Playgroud)
我相信来自的数字free
是最可靠的。但由于内存使用可能很复杂,因此没有简单的答案。你必须询问 Neofetch 的开发者为什么他们会这样计算。