如何在Ubuntu Server上记录每分钟的内存使用量?
我检查了几个程序,如htop或top命令,但找不到每分钟记录的任何function。
有没有办法做到这一点来跟踪内存问题?
编辑:我正在使用linode并决定使用Longview。
安装和配置sysstat
软件包,它sysstat
您的需求。
sudo apt-get install sysstat
如果我这样做,我可能会用RRDtool编写一些代码。
RRDtool是为基于区间的数据收集而构建的,然后在数据背面构建图形。 如果你曾经在ISPs控制面板上看到过netgraph,那可能是用RRDtool完成的。
你如何实现它取决于你。 有cron的“纯粹”bash解决方案,但也有漂亮的Python和Perl选项在那里漂浮:
-
https://github.com/icc/rrdtool-bash-scripts/blob/master/memory.sh
据我所知,这会更新设置位置的图像。 这可能是在你的网络服务器上,或者是通过NFS进入你的homedir。
-
http://coreygoldberg.blogspot.co.uk/2008/05/python-rrdpy-round-robin-databases.html
它拥有自己的计时器,可以随心所欲地完成任务。 我更喜欢这种打击,因为它更容易捅,但无论什么漂浮你的船。 对于非Pythoneer来说,设置起来可能更难。
如果您想要更多,请查看Munin。 它大量使用RRDtool来记录整个系统数据负载,并以设定的间隔生成静态HTML页面。
还有一种方法可以做到这一点。 通过使用cron作业,我们可以得到这个。
* * * * * username /path/to/./script.sh
脚本很简单
#!/bin/bash echo "$(date +%Y%m%d-%H%M%S) $(free -mt | awk 'END{print $4}')" >> ~/memlog.txt
在放置脚本之前
chmod +x script.sh
所以创建上面的脚本并按照我的说法执行,然后将脚本放在/ usr / bin位置。 然后打开你的/etc/crontab
sudo nano /etc/crontab
并将第一行放在那里。 该脚本每分钟执行一次,并为每分钟提供内存详细信息。
所以最后log.txt文件将保存每分钟的内存日志详细信息。
而且我还有一个有用的信息
watch cat log.txt
将显示终端中的log.txt文件,它将在当前终端中更新live.so内容,只需键入一次,即可实时监视log.txt文件。
vmstat -SM 60
会做(以兆字节为单位)。
你只需要记住,实际上可用的RAM是“free + cache + buf”。
为了记录目的,可能有意义地将其打印出时间戳,这可以通过各种方式实现,例如:
vmstat -nS M 60 | while read _vmstat; do echo $(date --rfc-3339=seconds) $_vmstat; done
我的伎俩。 使用此命令,我每5秒将free,vmstat和top的报告附加到txt文件中。
watch -n 5 'free -mt >> free-report.txt && vmstat -SM >> vm-report.txt && top -b -n1 >> top-report.txt'