使用Linux中的CLI工具生成磁盘使用情况图表

前端之家收集整理的这篇文章主要介绍了使用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.

猜你在找的Linux相关文章