文件夹大小linux

时间:2010-08-25 12:33:33

标签: c++ c linux directory

我需要定期监视我的linux机器上的文件夹,检查它们是否超出了某些限制。

我已经检查了stat函数调用但是在所有子文件夹和文件上递归运行stat非常耗时,我需要对所有文件夹执行此操作。

kernal是否维护了我可以在我的程序中解释的任何数据结构。或者是他们的任何标准api。

7 个答案:

答案 0 :(得分:3)

如果您需要强制执行限制,请使用quotas

答案 1 :(得分:3)

如果配额机制不合适,那么 inotify可能很方便:

来自维基百科:

  

inotify是一个Linux内核子系统   用于扩展文件系统的行为   注意文件系统的变化,和   向应用程序报告这些更改。将这些更改报告给应用程序。

答案 2 :(得分:2)

类型

du -sm directory_name

以递归方式以兆字节为单位给出目录的总大小。

类型

man du

获取此命令的帮助。

答案 3 :(得分:1)

你想要quotactl:

quotactl -- manipulate filesystem quotas

SYNOPSIS
     #include <sys/types.h>   /* types needed by quota.h */
     #include <sys/quota.h>   /* for disk quotas */

答案 4 :(得分:1)

递归调用stat是获取当前文件夹大小的唯一方法。如果要连续监视文件系统,请查看inotify。

答案 5 :(得分:0)

我同意@Axel。但是,如果您确实需要在代码中执行此操作,则可以通过popen执行 du shell命令:

FILE* pf = popen("du -ch [your folder] | grep total")

然后通过文件句柄和fgets(...)

读取命令的输出

答案 6 :(得分:0)

使用命令du,检查此链接... "How To Check Folder Size"