使用Linux中的CLI工具生成磁盘使用情况图表
|
有人要求 In this question在Linux中显示磁盘使用情况.我想在cli-path上进一步走一步…一个shell脚本如何将输出从类似于上一个问题的合理答案的输出中生成,从中生成一个图形/图表(在png中输出文件或东西)?这可能是一个有点太多的代码,要求在一个常规的问题,但我的猜测是,有人已经有一个oneliner躺在某个地方… 解决方法我会推荐 munin.它是专为这种事情设计 – 绘制CPU使用,内存使用,光盘使用等.像MRTG(但是MRTG主要是为了图形路由器的流量,除了带宽之外的图形,非常黑客)撰写Munin插件非常简单(这是项目目标之一).它们可以写成几乎任何东西(shell脚本,perl / python / ruby / etc,C,任何可以执行并产生输出的东西).插件输出格式基本上是disc1usage.value 1234.调试插件非常简单(与MRTG相比) 我已经在笔记本电脑上设置了它,以监控磁盘使用率,带宽使用情况(通过从我的ISP控制面板中提取数据,它绘制了我的两个下载“bin”,上传和新闻组使用情况),负载平均和进程数.一旦我安装了它(目前在OS X上有些困难,但是在Linux / FreeBSD上是微不足道的),我在几分钟内写了一个插件,并且第一次工作! 我会描述它的设置方式,但是,munin站点会做得比我好得多! 有一个示例安装here 一些替代品是nagios和仙人掌.你也可以用rrdtool写类似的东西. Munin,MRTG和Cacti基本上都是基于这种图形工具的更好的使用系统. 如果你想要的东西真的很简单,你可以做 import os
import time
while True:
disc_usage = os.system("df -h / | awk '{print $3}'")
log = open("mylog.txt")
log.write(disc_usage + "n")
log.close()
time.sleep(60*5)
然后.. f = open("mylog.txt")
lines = f.readlines()
# Convert each line to a float number
lines = [float(cur_line) for cur_line in lines]
# Get the biggest and smallest
biggest = max(lines)
smallest = min(lines)
for cur_line in lines:
base = (cur_line - smallest) + 1 # make lowest value 1
normalised = base / (biggest - smallest) # normalise value between 0 and 1
line_length = int(round(normalised * 28)) # make a graph between 0 and 28 characters wide
print "#" * line_length
这将使光盘使用的简单的ascii图.我真的不建议你使用这样的东西.为什么?日志文件会越来越大,越来越大.图表将逐渐变慢. RRDTool使用滚动数据库系统来存储它的数据,因此该文件将永远不会超过大约50-100KB,并且随着文件是固定长度,它一直很快地进行图形化. 简而言之.如果你想要的东西很容易地绘制几乎任何东西,使用munin.如果你想要一些更小,自包含,写一些与RRDTool. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
