在 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 的工具生成磁盘使用情况图表的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统中查找删除重复文件,释放磁盘空间。

跨源请求被阻止的 CORS - 使用角度 cli 解决 [仅限开发人员] [重复]

如何使用 Azure CLI 创建 VM 指定 Azure Linux OS 磁盘类型

sh 检查磁盘空间linux命令行(cli)

sh 检查磁盘空间linux命令行(cli)

sh 检查磁盘空间linux命令行(cli)