如何记录文件夹的最大大小?

如何记录文件夹的最大大小?

包在测试系统上解压并编译/tmp/test

我需要获取目录在任意时刻的最大大小在所有这些步骤中。

目前,我通过记录尺寸来帮助自己

du -sch /tmp/test >> /tmp/size.txt 

循环中。但这是一个非常肮脏的解决方法并且不精确。可能是计算机非常繁忙/tmp/testdu错过了峰值大小。有优雅的解决方案吗?

可用的文件系统是 ext 或 btrfs(如果有帮助的话)。

一位读者要求用法示例

  • 在为 Gentoo Linux 准备软件包时,我需要知道编译过程中需要多少空间。对于某些软件包(如 Firefox、Boost 或 LibreOffice),软件包验证是否有足够的可用空间非常重要。

  • 我编写了创建许多临时文件的脚本。监视文件夹大小会很有趣。

更新:与此同时,我发现sysdig这对于这项任务来说看起来很有希望,但我还没有得到文件夹大小。

答案1

一种可能是监视文件系统事件并在文件创建和文件删除时运行一些日志记录命令。有一些工具可能会促进这种方法,例如inotify,FSWATCH, 或者Linux审计框架。您可以尝试在每个事件发生后记录总磁盘空间,也可以仅记录磁盘空间的变化,然后使用日志来计算最大大小。例如,请参阅以下超级用户帖子:

以下帖子提供了一种不同的方法:

建议将有问题的目录安装在其自己的分区上,然后运行iostat在那个分区上。这应该允许您连续将 IO 事件记录到该目录。

有关监控磁盘 IO 的进一步讨论,您可以参考以下文章:

答案2

每 1 分钟安排一个脚本

*/1 *. *. *. * script path

脚本应该如下

#!/bin/bash
du -sch /tmp/|sed -n '1p' >>outputfile

一段时间后,对其进行排序并获得最大的尺寸。

相关内容