我有个简单的问题。我如何自定义 free 或 vmstat 或 top 命令的显示以仅显示内存使用情况,因为我希望通过 MRTG 绘制结果。
答案1
你可以通过 grep 传递内容/proc/meminfo
来获取所需的行。例如:
swann:/home/dspillett# grep MemTotal /proc/meminfo
MemTotal: 6099676 kB
swann:/home/dspillett# grep ^Cached /proc/meminfo
Cached: 5418912 kB
(在查找“cached”的命令中的 ^ 表示grep
只在行首匹配,因此它不会找到 SwapCached 值的行)
或者如果您想要一次显示多行,请使用扩展匹配选项,以便可以使用“或”运算符:
swann:/home/dspillett# egrep '^MemTotal:|^MemFree:|^Buffers:|^Cached:' /proc/meminfo
MemTotal: 6099676 kB
MemFree: 37596 kB
Buffers: 73084 kB
Cached: 5418912 kB
您可以使用tr
仅返回单个项目的数值:
swann:/home/dspillett# grep MemTotal /proc/meminfo | tr -d "[A-Z][a-z]: "
6099676
swann:/home/dspillett# egrep '^MemTotal:|^MemFree:|^Buffers:|^Cached:' /proc/meminfo | tr -d "[A-Z][a-z]: "
6099676
182808
75488
5276000
还有许多其他标准文本处理程序(cut
、paste
、sed
、awk
、xargs
...),您可以通过这些程序将结果通过管道传输到不同的格式。如果您在问题中给出了所需的格式,如果您不只是在寻找单个数值,则上述内容将满足您的要求,我们可以告诉您需要通过哪些过滤器传递信息才能获得所需的结果。我自己不使用 MRTG,所以我只能猜测它所需的输入格式。
答案2
/proc/meminfo
包含各种内存统计数据,您可以从中获取值并根据自己的心意进行操作。
答案3
严格来说,这并不是对您的问题的回答,但如果您有一个 /proc 文件系统,您也许能够从 /proc/meminfo 中 grep 出您感兴趣的信息。