我需要定期监视我的linux机器上的文件夹,检查它们是否超出了某些限制。
我已经检查了stat函数调用但是在所有子文件夹和文件上递归运行stat非常耗时,我需要对所有文件夹执行此操作。
kernal是否维护了我可以在我的程序中解释的任何数据结构。或者是他们的任何标准api。
答案 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"