Вопрос или проблема
Есть ли способ отслеживать и регистрировать размер папки в Bash/Ubuntu? Я выполняю некоторые вычисления и мне нужно знать, сколько дискового пространства они занимают. Они могут создавать некоторые временные папки на несколько минут/часов.
На самом деле, мне нужен только пик этого размера папки.
Вы можете попробовать что-то вроде:
watch “du -skh /ваша-директория”
Если размер/количество файлов увеличивается, установите интервал с “-n”, значительно больший, чем 2 секунды
С наилучшими пожеланиями,
Бодо
watch не предназначена для создания лог-файлов.
То, что вам нужно, похоже на:
#!/bin/bash
while :
do
du -skh /ваша-директория
echo "Нажмите [CTRL+C] для остановки.."
sleep 1
done
Ответ или решение
Чтобы эффективно отслеживать размер папки в системах на базе Bash/Ubuntu, вам понадобится простой скрипт, который будет периодически проверять размер целевой папки и записывать максимальное (пиковое) значение размера. Этот подход позволит вам увидеть, сколько дискового пространства занимает папка во время выполнения ваших вычислений.
Пример скрипта для мониторинга размера папки
Вы можете использовать следующий Bash-скрипт для мониторинга и записи пикового размера заданной папки:
#!/bin/bash
# Путь к папке, которую вы хотите мониторить
DIRECTORY="/ваша/папка"
# Переменная для хранения максимального размера
MAX_SIZE=0
# Файл для логирования
LOG_FILE="folder_size_log.txt"
# Открываем файл для логирования
echo "Мониторинг размера папки: $DIRECTORY" > "$LOG_FILE"
echo "Время, размер" >> "$LOG_FILE"
# Бесконечный цикл
while true; do
# Получаем текущий размер папки в килобайтах
CURRENT_SIZE=$(du -sk "$DIRECTORY" | awk '{print $1}')
# Проверяем, является ли текущий размер больше максимального
if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then
MAX_SIZE=$CURRENT_SIZE
fi
# Записываем текущее время и размер в лог-файл
echo "$(date +'%Y-%m-%d %H:%M:%S'), $CURRENT_SIZE KB" >> "$LOG_FILE"
# Пауза на 1 секунду
sleep 1
done
Объяснение скрипта
-
Переменные:
DIRECTORY
: Тут вы указываете путь к папке, которой хотите следить.MAX_SIZE
: Переменная, в которой будет храниться максимальный размер, обнаруженный скриптом.LOG_FILE
: Файл, в который будет записываться информация о размере папки.
-
Логирование:
- В начале скрипта создается лог-файл, в который записывается заголовок с указанием папки и формата данных.
-
Размер папки:
- Команда
du -sk "$DIRECTORY"
используется для получения текущего размера папки в килобайтах. awk '{print $1}'
извлекает только значение размера из вывода команды.
- Команда
-
Проверка и запись:
- Скрипт проверяет, превышает ли текущий размер записанный пик. Если да, то он обновляет значение пика.
- В лог-файл записываются время и текущий размер папки.
-
Цикл:
- Скрипт выполняется в бесконечном цикле, с паузой в одну секунду между проверками.
Запуск скрипта
Чтобы запустить скрипт:
-
Сохраните скрипт в файл, например
monitor_folder_size.sh
. -
Сделайте файл исполняемым:
chmod +x monitor_folder_size.sh
-
Запустите его:
./monitor_folder_size.sh
Заключение
Этот скрипт поможет вам отслеживать размер папки в реальном времени и записывать его в лог. В результате вы получите наглядный отчет о пиковом размере папки, что будет полезно для оценки необходимых ресурсов. Вы можете изменить интервал проверки, увеличив значение в команде sleep
в зависимости от ваших нужд.
Надеюсь, этот скрипт окажется полезным для вас в мониторинге размера папки на Ubuntu!