我检查了一些程序,例如 htop 或 top 命令,但找不到任何每分钟记录的功能。
有没有办法可以追踪内存问题?
编辑:我正在使用 linode,并决定使用 Longview。
答案1
安装并配置该sysstat
包,它可以完成您所要求的操作。
sudo apt-get install sysstat
答案2
如果我要这么做,我可能会写一些脚本RRD工具。
RRDtool 是专为基于间隔的数据收集而构建的,然后根据数据构建图表。如果您曾在 ISP 控制面板上看到过网络图,那么它很可能就是使用 RRDtool 制作的。
如何实现它取决于你。有使用 cron 的“纯” bash 解决方案,但也有不错的 Python 和 Perl 选项:
https://github.com/icc/rrdtool-bash-scripts/blob/master/memory.sh
据我所知,这会更新某个位置的图像。该位置可能是您的网络服务器上,也可能是通过 NFS 复制到您的主目录中。
http://coreygoldberg.blogspot.co.uk/2008/05/python-rrdpy-round-robin-databases.html
它有自己的计时器,可以做任何你想做的事情。我更喜欢这个而不是 bash,因为它更容易操作,但随你便。对于非 Python 开发人员来说,设置起来可能更困难。
如果您想要更多,请查看 Munin。它大量使用 RRDtool 来记录整个系统数据,并按设定的时间间隔生成静态 HTML 页面。
答案3
还有一种方法可以实现这一点。通过使用 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 文件,它将实时更新内容。因此,在当前终端中,只需输入一次,您就可以实时观看 log.txt 文件。
答案4
这是我的诀窍。使用此命令,我每 5 秒将 free、vmstat 和 top 的报告附加到 txt 文件中。
watch -n 5 'free -mt >> free-report.txt && vmstat -S M >> vm-report.txt && top -b -n1 >> top-report.txt'