当前位置: 首页>>技术问答>>正文


我如何监控内存使用情况?

, , , , ,

问题描述

我已经使用top来查看目前的内存使用情况。但我想监视一段时间内的内存使用情况。例如,开始监控,然后执行一些命令,最后停止监控并查看在此期间内使用了多少内存。

我如何在Ubuntu服务器上执行此操作?

我想我可以每隔5秒左右启动一次cronjob,并调用一个记录当前内存使用情况的命令。但是,我应该使用什么命令以易于记录到文本文件的格式获取当前的内存使用情况?

最佳解决办法

我建议结合以前的答案

watch -n 5 free -m

请注意,Linux喜欢将任何额外的内存用于cache hard drive blocks。所以你不想看看免费的Mem。您想查看-/+ buffers/cache:行的free列。这显示了应用程序有多少内存可用。所以我只跑了free -m并得到了这个:

             total       used       free     shared    buffers     cached
Mem:          3699       2896        802          0        247       1120
-/+ buffers/cache:       1528       2170
Swap:         1905         62       1843

我知道我正在使用1528 MB并拥有2170 MB的免费空间。

注意:要停止此watch循环,只需按Ctrl + C

次佳解决办法

我认为htop是最好的解决方案。

  • sudo apt-get install htop

这样你会注意到哪些程序正在使用大多数RAM。如果你愿意,你可以很容易地终止一个。这是一个截图!

server,memory,monitoring,logging,memory-usage,ubuntu

第三种解决办法

如果您正在寻找每个正在运行的进程使用的内存的细分,那么我可能会推荐检查ps_mem.py(在pixelbeat.org上找到here)。

我知道在上面的评论中,你提到想从免费的one-line快照,但我想其他人可能会觉得这很有用。

示例输出:

user@system:~$ sudo ps_mem.py
[sudo] password for user:
 Private  +   Shared  =  RAM used       Program

  4.0 KiB +   7.5 KiB =  11.5 KiB       logger
  4.0 KiB +   8.0 KiB =  12.0 KiB       mysqld_safe
  4.0 KiB +  10.0 KiB =  14.0 KiB       getty
  4.0 KiB +  42.0 KiB =  46.0 KiB       saslauthd (5)
 48.0 KiB +  13.0 KiB =  61.0 KiB       init
 56.0 KiB +  27.5 KiB =  83.5 KiB       memcached
 84.0 KiB +  26.5 KiB = 110.5 KiB       cron
120.0 KiB +  50.0 KiB = 170.0 KiB       master
204.0 KiB + 107.5 KiB = 311.5 KiB       qmgr
396.0 KiB +  94.0 KiB = 490.0 KiB       tlsmgr
460.0 KiB +  65.0 KiB = 525.0 KiB       rsyslogd
384.0 KiB + 171.0 KiB = 555.0 KiB       sudo
476.0 KiB +  83.0 KiB = 559.0 KiB       monit
568.0 KiB +  60.0 KiB = 628.0 KiB       freshclam
552.0 KiB + 259.5 KiB = 811.5 KiB       pickup
  1.1 MiB +  80.0 KiB =   1.2 MiB       bash
  1.4 MiB + 308.5 KiB =   1.7 MiB       fail2ban-server
888.0 KiB +   1.0 MiB =   1.9 MiB       sshd (3)
  1.9 MiB +  32.5 KiB =   1.9 MiB       munin-node
 13.1 MiB +  86.0 KiB =  13.2 MiB       mysqld
147.4 MiB +  36.5 MiB = 183.9 MiB       apache2 (7)
---------------------------------
                        208.1 MiB
=================================

 Private  +   Shared  =  RAM used       Program

我不喜欢的唯一部分是脚本声称需要root权限。我还没有机会明白为什么会出现这种情况。

第四种办法

使用free命令。例如,这是free -m的输出:

             total       used       free     shared    buffers     cached
Mem:          2012       1666        345          0        101        616
-/+ buffers/cache:        947       1064
Swap:         7624          0       7624

free -m | grep /+将只返回第二行:

-/+ buffers/cache:        947       1064

第五种办法

watch命令可能很有用。尝试watch -n 5 free以每五秒更新一次来监视内存使用情况。

第六种办法

为了直观监控整个RAM的使用情况,如果使用Byobu,它将使您的内存使用量保持在终端的较低right-hand角落,并在任何终端会话期间运行。

从截图中可以看到,我的虚拟机具有1h3m的正常运行时间,0.00负载,2.8GHz(虚拟)处理器和994MB(21%)的系统RAM可用空间。

server,memory,monitoring,logging,memory-usage,ubuntu

第七种办法

单线解决方案和输出:

free -m | grep "Mem:"

以下是预期输出的示例:

server,memory,monitoring,logging,memory-usage,ubuntu

第八种办法

您可以使用cat /proc/meminfo

server,memory,monitoring,logging,memory-usage,ubuntu

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/167.html,未经允许,请勿转载。