客户端的可编写脚本的磁盘使用情况明细

时间:2018-07-24 07:26:02

标签: linux bash shell centos7

我不是在寻找工具。我希望编写出清晰的故障清单,因此可以将其发送给不知道如何执行此操作的VPS用户。

我一直在寻找一种通过Shell脚本收集有关磁盘使用情况的大量数据的方法。在我的工作中,很多人打电话问“为什么我的磁盘已满” 我运行du -h --max-depth = 1 |排序-rn,但这有点笨拙,我必须继续深入研究。...

我正在尝试通过如下这样的shell脚本细分磁盘使用情况:

**home/ is consuming 400GB of disk space**</br>
home/user1 120GB
home/user2 200GB
**var/ is using 100GB of disk space**

到目前为止,我提出了以下建议:

#!/bin/bash
for i in $(ls -d */ |  grep -v proc);
 do
printf "**** $i has the following breakdown ********\n"

du -h --max-depth=1 $i
done

如何为用户提供更清洁,更容易理解的磁盘使用情况细分方式?只是希望能够将用法包装在漂亮的粉红色蝴蝶结中并说“祝你好运”

3 个答案:

答案 0 :(得分:2)

尝试尝试ncdu (NCurses Disk Usage),例如:

$ ncdu -q -x

选项:

-q  Quiet mode. While scanning or importing the directory, ncdu will
    update the screen 10 times a second by default, this will be
    decreased to once every 2 seconds in quiet mode. Use this
    feature to save bandwidth over remote connections. 

还有

 -x  Do not cross filesystem boundaries, i.e. only count files and
     directories on the same filesystem as the directory being
     scanned.

此处有更多示例:https://dev.yorhel.nl/ncdu/man#EXAMPLES

答案 1 :(得分:2)

这是另一种解决方案。您可以使用tree以“树状”格式列出目录的内容。然后,可以将其与磁盘使用标志结合使用,以查看嵌套目录及其大小。

tree -L 2 --du -h

“-L”标志定义查询的深度或级别。

这将为您提供如下输出:

Screenshot of tree command output in the command line

您甚至可以创建一个可以在浏览器中打开的xml文件,如下所示:

tree -L 2 --du -h -H s > disk_usage.html

然后您可以在浏览器中打开文件,输出将如下所示:

Screenshot of the xml output when opened in the browser

希望这会有所帮助!

答案 2 :(得分:0)

您的代码段是一个不错的开始,您无法在一行中完成此操作。 一些文件夹,您需要的深度> 1(主页),而另一些深度= 1(无功)