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

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

我曾经习惯于top查看当前的内存使用情况。但我想监控一段时间内的内存使用情况。例如,启动监控,然后执行一些命令,最后停止监控,看看这段时间内使用了多少内存。

我如何在 Ubuntu Server 上执行此操作?

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

答案1

我建议结合之前的答案

watch -n 5 free -m

请注意,Linux 喜欢使用任何额外的内存来缓存硬盘块。因此,您不能只查看空闲内存Mem。您需要查看free行的列-/+ buffers/cache:。这显示了应用程序可用的内存量。因此,我运行后free -m得到了以下结果:

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

我知道我正在使用1528 兆并且有2170 兆自由的。

笔记:要停止此watch循环,只需按Ctrl+ C

答案2

我认为htop这是最佳解决办法。

  • sudo apt-get install htop

这样你就会注意到哪些程序占用了最多的内存。如果你愿意,你可以轻松地终止一个程序。这是一张截图!

答案3

如果你正在寻找每个正在运行的进程所用内存的详细分类,那么我建议你查看一下ps_mem.py(成立这里在 pixelbeat.org 上)。

我知道在上面的评论中,你提到想要一张来自自由的,但我想其他人可能会发现这很有用。

示例输出:

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 权限。我还没有机会确切了解为什么会这样。

答案4

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

相关内容