我需要定期监控我的Linux机器上的文件夹,以检查它们是否超出了某些限制。
我已经检查了stat函数调用,但在所有子文件夹和文件上递归运行stat非常耗时,而我需要对所有文件夹执行此操作。
内核是否维护任何数据结构,我可以在我的程序中解释。或者是否有标准API可用于此。
类型
du -sm directory_name
会递归地给出目录的总大小(以兆字节为单位)。
类型
man du
需要帮助使用此命令。
你需要使用 quotactl:
quotactl -- manipulate filesystem quotas
SYNOPSIS
#include <sys/types.h> /* types needed by quota.h */
#include <sys/quota.h> /* for disk quotas */
递归调用stat是获取当前文件夹大小的唯一方法。如果您想持续监视文件系统,请查看inotify。
st_blksize
的倍数。 - JeremyP我同意@Axel的说法。但是如果您确实需要通过代码来完成此操作,您可以通过popen执行du shell命令:
FILE* pf = popen("du -ch [your folder] | grep total")
然后通过文件句柄和fgets(...)读取命令的输出