Размер папки Linux - PullRequest
       8

Размер папки Linux

3 голосов
/ 25 августа 2010

Мне необходимо периодически отслеживать папки на моем компьютере с Linux, чтобы проверить, не превышают ли они определенные ограничения.

Я проверил вызов функции stat, но рекурсивный запуск статистики для всех вложенных папок и файлов занимает много времени, и мне нужно сделать это для всех папок.

Поддерживает ли kernal какие-либо структуры данных, которые я могу интерпретировать в моей программе. Или их стандартные API для этого.

Ответы [ 7 ]

3 голосов
/ 25 августа 2010

Если механизм квот не подходит, тогда может пригодиться inotify :

Из википедии:

inotify - это подсистема ядра Linux, котораядействует для расширения файловых систем, чтобы замечать изменения в файловой системе и сообщать об этих изменениях в приложения. сообщать об этих изменениях в приложения.

3 голосов
/ 25 августа 2010

Если вам необходимо ввести ограничения, используйте квоты

2 голосов
/ 25 августа 2010

Тип

du -sm directory_name

Рекурсивно даст вам общий размер каталога в мегабайтах.

Введите

man du

для получения справки по этой команде.

1 голос
/ 25 августа 2010

Рекурсивный вызов статистики - это единственный способ получить текущий размер папки.Если вы хотите постоянно следить за файловой системой, взгляните на inotify.

1 голос
/ 25 августа 2010

Вы хотите квотактл:

quotactl -- manipulate filesystem quotas

SYNOPSIS
     #include <sys/types.h>   /* types needed by quota.h */
     #include <sys/quota.h>   /* for disk quotas */
0 голосов
/ 03 августа 2011

Используйте команду du, проверьте эту ссылку ... "Как проверить размер папки"

0 голосов
/ 25 августа 2010

Я согласен с @Axel. Однако, если вам действительно нужно сделать это в коде, вы можете выполнить команду оболочки du через popen:

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

Затем прочитайте вывод команды через дескриптор файла и fgets (...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...