LinuxForum.Fans
Тема

Прогнозирование времени заполнения места на диске

Автор: assfired 2 сообщений 1631 просмотров
27.10.2023 14:06 · отредактировано #439104

Привет.

Есть Ubuntu 22, а на нем лежит лог-файл в директории /var/tmp.
Лог файл имеет свойство разрастаться, а передо мной поставлена задача написания небольшого скрипта, который может рассчитать средне-временное значение прироста объема файла и, зная его, настроить прогнозирование момента, когда файл упрется в диск, чтобы за 2 часа до паники предупредить о необходимости вычистить старые данные в логе.

Признаюсь честно, пытался замерять среднюю скорость роста объема файла (через df в разные промежутки времени), чтобы использовать это значение для выстраивания, но растущие из задницы руки обрушили эту затею.

Если вам не зазорно мне оказать поддержку (а она, скорее всего, потребуется мне буквально в пошаговом формате), то буду очень благодарен.


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

27.10.2023 17:23 #439105
"assfired" написал:
Лог файл имеет свойство разрастаться, а передо мной поставлена задача написания небольшого скрипта, который может рассчитать средне-временное значение прироста объема файла и, зная его, настроить прогнозирование момента, когда файл упрется в диск, чтобы за 2 часа до паники предупредить о необходимости вычистить старые данные в логе.

Средне-временное значение прироста - понятие растяжимое. Если за интервал времени взять эти самые 2 часа, тогда как-то так...

text

#!/bin/bash

echo "Всего доступно на диске (КБ)" disk_avail=$(df -k / --output=avail | tail -n1| tr -d " ") echo "$disk_avail"

echo "Текущее использование диска, на котором лежит файл (КБ)" disk_used=$(df -k / --output=used | tail -n1 | tr -d " ") echo "$disk_used"

echo "Ждём 2 часа (60x60x2=7200 sec)" sleep 7200

echo "Узнаём, на сколько уменьшилось используемое пространство диска рез 2 часа (КБ)" let delta=$(df -k / --output=used | tail -n1 | tr -d " ")-$disk_used echo "$delta"

echo "Предел доступного размера диска ЗА 2 часа до заполнения" let disk_alarm=$disk_avail-$delta echo "$disk_alarm"

#Бесконечный опрос с интервалом 5 минут (5x60=300 sec) while true; do #Если текущее использование диска >= пределу доступного размера диска, то... if [[ $(df -k / --output=used | tail -n1 | tr -d " ") -ge $disk_alarm ]]; then echo "Здесь команда по очистке файла..." #Выпрыгиваем наружу, или не выпрыгиваем и продолжаем... #break; fi; sleep 300 done;

exit 0

В Linux есть квоты:
Пример работы с дисковыми квотами в Linux
Дисковые квоты в Linux (disk quota limit linux debian)

Войдите или зарегистрируйтесь, чтобы ответить.