使用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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |