在这个问题中,有人询问如何在Linux中显示磁盘使用情况。我希望能够进一步发展这个命令行的功能...不妨编写一个shell脚本,从诸如先前问题的合理答案的输出中获取数据,并生成一个图表/图形(输出到png文件或其他格式)。这可能需要一些代码,在一个普通的问题中询问可能有些多余,但我的猜测是,某个人已经在某处拥有了一个简短的命令行。
disc1usage.value 1234
。与MRTG相比,调试插件非常容易。这里有一个示例安装在这里
一些替代方案是nagios和cacti。您还可以使用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
我们使用RRDtool(像MRTG这样的工具的数据存储后端)在工作中自己制作了图表。我们每5分钟运行一个Perl脚本,对每个分区进行一次du并将其塞入RRD数据库,然后使用RRD的graph函数来构建图表。虽然需要一些时间来设置.rrd文件(例如,我不得不重新学习RPN来做我想做的一些计算),但如果您有一些要随时间绘制图形的数据,则RRDtool是一个不错的选择。
我猜有几个选项:
对于纯CLI解决方案,请使用类似gnuplot的东西。请参见此处以获取示例用法。自从我还是学生以来,我就没有使用过gnuplot :-)
虽然不是纯CLI解决方案,但可以下载类似JFreeChart的东西,并编写一个简单的Java应用程序,读取stdin并创建您的图表。
希望这可以帮助到您。