我试图自己解决这个问题,但由于某种原因,我无法弄明白这一点,请你帮我解决这个问题。我正在使用proc文件系统来解析信息并重定向到文件。我只是无法得到记忆。
mhz=$(cat /proc/cpuinfo | grep -m 1 "cpu MHz" | cut -d' ' -f 3-)
model=$(cat /proc/cpuinfo | grep -m 1 "model name" | cut -d' ' -f 4-)
memory=$(cat /proc/meminfo | grep MemTotal | cut -d' ' -f 2-)
free=$(cat /proc/meminfo | grep MemFree | cut -d' ' -f 2-)
version=$(cat /proc/version | cut -d' ' -f 3)
echo >> /home/user/data/proc
echo Filename, field name, data >> /home/user/data/proc
echo /proc/cpuinfo, cpu MHz: $model >> /home/user/data/proc
echo /proc/cpuinfo, Model Name: $mhz >> /home/user/data/proc
echo /proc/meminfo, Total Memory: $memory >> /home/user/data/proc
echo /proc/meminfo, Free Memory: $free >> /home/user/data/proc
echo /proc/version, Linux Version: $version >> /home/user/data/proc
答案 0 :(得分:0)
这是一个评论,但我在评论中没有多行,所以在这里:
mem_total_without_unit=$(</proc/meminfo grep MemTotal | grep -Eo '[0-9]+')
mem_free_without_unit=$(</proc/meminfo grep MemFree | grep -Eo '[0-9]+')
# print the free memory
# customize the unit based on the format of your /proc/meminfo
echo "$((mem_total_without_unit - mem_free_without_unit)) kB"
示例输出:
12427860 kB
答案 1 :(得分:0)
你得到的答案将毫无意义。理想情况下,Linux将使用所有你的RAM。在内存中缓存I / O缓冲区和文本将使计算无效。
现在,如果您要回答的问题是&#34;我的系统是否已满载&#34;,则更有用的工具是vmstat(8):
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 1131424 3734228 263588 3188088 1 1 52 91 6 6 41 9 49 1
您需要注意的是SI(交换)列。如果您看到常量非零值,则表示您遇到了分页问题。 SO(换出)值可以忽略。
但是,一般情况下,如果你遇到分页问题,性能会像悬崖上的岩石一样下降。
网站http://www.linuxatemyram.com/对内核的内存管理进行了轻松的解释。