如何在Ubuntu Server上记录每分钟的内存使用量?

我检查了几个程序,如htop或top命令,但找不到每分钟记录的任何function。

有没有办法做到这一点来跟踪内存问题?

编辑:我正在使用linode并决定使用Longview。

https://dl.dropboxusercontent.com/u/28301519/2013-04-18_231652.png

安装和配置sysstat软件包,它sysstat您的需求。

 sudo apt-get install sysstat 

如果我这样做,我可能会用RRDtool编写一些代码。

RRDtool是为基于区间的数据收集而构建的,然后在数据背面构建图形。 如果你曾经在ISPs控制面板上看到过netgraph,那可能是用RRDtool完成的。

你如何实现它取决于你。 有cron的“纯粹”bash解决方案,但也有漂亮的Python和Perl选项在那里漂浮:

如果您想要更多,请查看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'