我曾经习惯于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
每五秒更新一次来监控内存使用情况。