du -csh /
Вычисленное выше займет огромное количество времени, есть ли способ увидеть менее точный результат с меньшими накладными расходами?
ОБНОВИТЬ
Что я хочу знать, так это общий размер в определенном каталоге.
Насколько более оптимизированная версия du
, Я не знаю ни одного. На ум приходят:
stat -c '%h'
) - 2. Из всего этого, параметры квот и выделенных разделов, вероятно, самые простые и эффективные.
Проблема в том, что 'du' должен перечислить каждый объект в поддереве. Это операция с интенсивным использованием метаданных и требует времени для большинства файловых систем Linux. На ум приходят некоторые файловые системы, например NTFS и Novell NSS, которые могут отслеживать размеры каталогов, как это в метаданных что значительно ускоряет эту операцию. Как правило, если ваша файловая система поддерживает какие-либо квоты каталогов, она должна отслеживать эти данные внутри для обеспечения соблюдения, каждое изменение размера реплицируется вверх по дереву каталогов в точку квоты (NTFS) или в каждый каталог (NSS ), когда это происходит, поэтому получить размер дерева каталогов очень быстро.
К сожалению, не существует способа заставить du работать быстрее, только обходные пути.
du -h --max-depth=1
Предоставляет вам размеры в человеческом формате КБ / МБ / ГБ из текущего рабочего каталога.
С помощью стандартных инструментов вы должны получать размер каждого файла в каталоге каждый раз, когда хотите узнать общий размер. Возможно, более эффективный способ сделать это - иметь «монитор размера каталога», который отслеживает текущий размер каталога. Такой вещи не существует (насколько я знаю), но вы можете реализовать ее с помощью inotify
. Возможно, не с bash (и inotify-tools
), но вы, вероятно, можете использовать, например, python и pyinotify.
Вы можете найти gt5
быть полезным. В нем хранятся самые последние du
информации и сравнивает ее при следующем запуске. Он отображает свой вывод с помощью браузера в текстовом режиме, такого как links
.
Также рассмотрите параметр -x в du - "одна файловая система", если вы делаете
du -xh / --max-depth=1
Вы увидите только сводку использования диска в корневом разделе, и он не будет пытаться добавить / proc, / sys, / dev и так далее ...
если вы хотите использовать диск только для корневой файловой системы, тогда
df -h /
Нет. Могли бы вы периодически выполнять двойную конвейерную передачу в текстовый файл в задании cron, настроенном на выполнение в ночное время, чтобы у вас не сразу были доступны актуальные данные?
Обратите внимание, что измерение дискового пространства, используемого папкой, содержащей большое количество файлов в Windows, также занимает некоторое время.
df -h сделает свое дело
df -kh /
это покажет вам объем используемого и доступного дискового пространства.
Возможно
df -h
лишнего текста, так как короткого краткого ответа недостаточно, чтобы serverfault решил, что я человек.
Чтобы найти место только под этим каталогом, укажите его вместо /
. Чтобы найти место под каталогами foo
и bar
, перечислите оба:
du -csh foo bar
Вы должны использовать dnotify для расчета использования диска, если файловая система не меняется часто.