问题描述
我已经使用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。如果你愿意,你可以很容易地终止一个。这是一个截图!
第三种解决办法
如果您正在寻找每个正在运行的进程使用的内存的细分,那么我可能会推荐检查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可用空间。
第七种办法
单线解决方案和输出:
free -m | grep "Mem:"
以下是预期输出的示例:
第八种办法
您可以使用cat /proc/meminfo
。