Как отслеживать размер папки в Linux?

Вопрос или проблема

Существует ли способ отслеживать и записывать размер папки в Bash/Ubuntu? Я запускаю некоторые вычисления и мне нужно знать, сколько места на диске они занимают. Возможно, они создадут несколько временных папок на несколько минут/часов.

На самом деле, мне нужен только пик этого размера папки.

watch не предназначен для создания лог-файлов.

То, что вы ищете, – это что-то вроде:

#!/bin/bash
while :
do
    du -skh /ваша-директория
    echo "Нажмите [CTRL+C], чтобы остановить.."
    sleep 1
done

Хотя это давно устарело, я подумал, что мог бы добавить подход на основе inotify к делу, вместо основанного на времени или ожидании.

Если файл записывается и закрывается, или если файл удаляется, сработает du, и это будет записано с меткой времени и размером в МБ.

Если вы уберете один из q в -qq, вы увидите события и связанные с ними имена файлов в терминале, в котором выполняется скрипт.

#!/bin/sh
while inotifywait -qq -r -e close_write -e delete /путь/к/директории; do
  (/usr/bin/echo -en "$(date '+%Y%m%d%H%M%S')\t";du -sm|cut -f1) >> ~/du.log
done

После завершения вашего кода просто выполните это:

sort -k2,2n ~/du.log|tail -n 1

И вы готовы.

Примечание: Если dir в приведенном выше скрипте является вашей домашней директории, вам, очевидно, нужно будет сохранить лог в другое место.

Вы можете попробовать что-то вроде:

watch "du -skh /ваша-директория"

Если размер/количество файлов увеличивается, установите интервал с помощью -n значительно больше 2 секунд.

Ответ или решение

Как мониторить размер папки в Linux

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

Метод 1: Использование скрипта на Bash

Одним из простых подходов является написание Bash-скрипта, который будет периодически проверять размер каталога. Пример скрипта, который можно использовать для этой цели:

#!/bin/bash
while :
do
    du -skh /ваша-директория
    echo "Нажмите [CTRL+C], чтобы остановить.."
    sleep 1
done

Этот скрипт будет выводить размер указанной папки с интервалом в одну секунду. Вы можете изменить /ваша-директория на путь к папке, которую хотите отслеживать. Однако этот подход не записывает данные в лог.

Метод 2: Использование inotify для отслеживания событий

Более эффективным способом мониторинга размера папки является использование inotify. Это позволит вашему скрипту реагировать на события, такие как создание или удаление файлов, что позволяет вести учет размера папки более точно и быстро. Пример скрипта на основе inotify:

#!/bin/sh
while inotifywait -qq -r -e close_write -e delete /путь/к/директории; do
  (/usr/bin/echo -en "$(date '+%Y%m%d%H%M%S')\t"; du -sm /путь/к/директории | cut -f1) >> ~/du.log
done

В этом скрипте:

  • inotifywait отслеживает изменения в указанной папке.
  • Когда изменяются файлы, выполняется команда du, и результат записывается в файл du.log с отметкой времени.
  • Убедитесь, что у вас есть соответствующие разрешения на запись в указанный лог-файл.

После того как выполнение ваших вычислений завершится, вы можете получить пиковой размер папки с помощью следующей команды:

sort -k2,2n ~/du.log | tail -n 1

Метод 3: Использование watch для периодического мониторинга

Если вы предпочитаете более простой подход, можете воспользоваться командой watch. Например, выполните следующую команду:

watch -n 2 du -skh /ваша-директория

Эта команда будет каждые 2 секунды выводить текущий размер папки. Вы можете увеличить интервал, если количество файлов изменяется медленно.

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...