在 Linux 中使用仅限 CLI 的工具生成磁盘使用情况图表
Posted
技术标签:
【中文标题】在 Linux 中使用仅限 CLI 的工具生成磁盘使用情况图表【英文标题】:Generate disk usage graphs/charts with CLI only tools in Linux 【发布时间】:2010-09-07 15:09:27 【问题描述】:In this question 有人询问如何在 Linux 中显示磁盘使用情况。我想在 cli-path 上更进一步……一个 shell 脚本如何从前一个问题的合理答案中获取输出并从中生成图形/图表(以 png 格式输出文件什么的)?在常规问题中要求这可能有点过多的代码,但我的猜测是有人已经在某个地方放置了一个单线...
【问题讨论】:
【参考方案1】:如果某些 ASCII 字符对您来说足够“图形化”,我可以推荐ncdu。这是一个非常好的交互式 CLI 工具,它可以帮助我在不执行 cd bigdir 的情况下降级大目录; du -hs 一遍又一遍。
【讨论】:
+1 远程垃圾的完美增强!喜欢这个工具,超快速的使用和删除工作流程!【参考方案2】:我会推荐munin。它专为这类事情而设计 - 绘制 CPU 使用情况、内存使用情况、磁盘使用情况等图表。有点像 MRTG(但 MRTG 主要用于绘制路由器的流量图,用它绘制除带宽以外的任何东西都是非常骇人听闻的)
编写 Munin 插件非常容易(这是项目目标之一)。它们几乎可以用任何东西编写(shell 脚本、perl/python/ruby/etc、C、任何可以执行并产生输出的东西)。插件输出格式基本上是disc1usage.value 1234
。并且调试插件非常容易(与 MRTG 相比)
我已经在我的笔记本电脑上设置了它来监控磁盘使用情况、带宽使用情况(通过从我的 ISP 的控制面板中提取数据,它会绘制我的两个下载“bin”、上传和新闻组使用情况)、平均负载和过程。一旦我安装了它(目前在 OS X 上有点困难,但在 Linux/FreeBSD 上是微不足道的),我在几分钟内编写了一个插件,它第一次工作!
我会描述它是如何设置的,但是 munin 网站会比我做得更好!
有一个安装示例here
一些替代品是 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
这将制作一个简单的光盘使用情况 ascii 图表。我真的真的不建议你使用这样的东西。为什么?日志文件会越来越大,越来越大。图表将逐渐变慢。 RRDTool 使用滚动数据库系统来存储它的数据,因此文件永远不会超过 50-100KB,并且由于文件是固定长度,因此它始终可以快速绘制图表。
简而言之。如果您想轻松绘制几乎任何东西,请使用munin。如果您想要更小且独立的东西,请使用 RRDTool 编写一些东西。
【讨论】:
【参考方案3】:我们在工作中使用RRDtool(MRTG 等工具的数据存储后端)推出了自己的产品。我们每 5 分钟运行一次 perl 脚本,每个分区获取一个 du 并将其填充到 RRD 数据库中,然后使用 RRD 的图形函数来构建图形。弄清楚如何设置 .rrd 文件需要一些时间(例如,我必须重新学习 RPN 才能进行一些我想做的计算),但是如果你有一些数据想要随着时间的推移绘制图表, RRD 工具是个不错的选择。
【讨论】:
【参考方案4】:我想有几个选择:
对于纯 CLI 解决方案,请使用 gnuplot 之类的工具。请参阅here 示例用法。我从学生时代就没有使用过 gnuplot :-)
并不是真正的纯 CLI 解决方案,而是下载 JFreeChart 之类的内容,然后编写一个简单的 Java 应用程序来读取标准输入并创建图表。
希望这会有所帮助。
【讨论】:
以上是关于在 Linux 中使用仅限 CLI 的工具生成磁盘使用情况图表的主要内容,如果未能解决你的问题,请参考以下文章
跨源请求被阻止的 CORS - 使用角度 cli 解决 [仅限开发人员] [重复]