Ru-Board.club
← Вернуться в раздел «UNIX»

» Определить свободное место на диске

Автор: artlayers
Дата сообщения: 25.07.2011 05:36
Добрый день. Есть такая задача:
- Сайт находится на VPS под Debian
- Необходимо:
a) Проверять раз в 30 минут сколько осталось свободного места на ЖД.
b) Если его осталось менее заданной величины (например 100мб), то удалить все файлы старше определенного возраста в определенной папке.

Пункт b я сделал давно запуском по крону find с параметрами, но на данный момент это решение очень не гибкое. Я тупо его запускаю раз в 12 часов. А нужно запускать когда заканчивается место на ЖД.
Подскажите как реализовать в целом проверку на свободное место и запуск если места мало команды на удаление.
Спасибо.
Автор: FIZIK
Дата сообщения: 25.07.2011 11:41
Что-то вроде этого

if [ `df|grep /dev/sda7|awk '{ print $5 }'|awk '{gsub(/%/,"")}1'`>80 ]; then
тут удаляем файлы
fi

Вместо 80 подставь свой процент заполнения
вместо /dev/sda7 свой раздел


Автор: artlayers
Дата сообщения: 26.07.2011 20:12
Спасибо. Сделал так
if [ `df|grep /dev/simfs|awk '{ print $5 }'|awk '{gsub(/%/,"")}1'`>80 ]; then find /var/www/test/cache/ -cmin +50 -type f -delete fi
Через консоль я получаю вот такое
http://my.jetscreenshot.com/2772/20110726-wa9p-10kb.jpg
то есть предложение что-нибудь еще ввести.
В итоге не работает.
Что делаю не так?
Автор: urodliv
Дата сообщения: 26.07.2011 22:00
После
Цитата:
-delete
поставьте точку с запятой.
Автор: artlayers
Дата сообщения: 27.07.2011 04:44
Теперь удаляет, но почему-то в любом случае. Сейчас 50% занято, в процентах так >80 и оставил, тем не менее, команда на удаление срабатывает, хотя не должна.
Автор: urodliv
Дата сообщения: 27.07.2011 17:15
Знак "больше" замените на "-gt":

Код: if [ `df|grep /dev/simfs|awk '{ print $5 }'|awk '{gsub(/%/,"")}1'` -gt 80 ]; then find /var/www/test/cache/ -cmin +50 -type f -delete; fi
Автор: artlayers
Дата сообщения: 28.07.2011 10:32
Спасибо!
Еще один момент касаемо крона. Та строка, что была предложена работает отлично если в консоль её закинуть, но вот прописал я её в крон и она не работает. В логах крона вижу вот такое:
Jul 28 11:25:01 имясервера crond[25675]: (root) CMD (if [ `df|grep /dev/simfs|awk '{ print $5 }'|awk '{gsub(/)
а должно было быть
if [ `df|grep /dev/simfs|awk '{ print $5 }'|awk '{gsub(/%/,"")}1'` -gt 95 ]; then /usr/bin/find /var/www/test/cache/ -cmin +4555 -type f -delete; fi

То есть, прерывается где-то. Похоже что на знаке %
Автор: urodliv
Дата сообщения: 28.07.2011 20:29
Попробуйте так:

Код: if [ `df | awk '/simfs/ {print $5}' | awk '{gsub(/.$/,"")}1'` -gt 80 ]; then find /var/www/test/cache/ -cmin +50 -type f -delete; fi
Автор: artlayers
Дата сообщения: 29.07.2011 09:04
Спасибо! Уже сделал - нужно было просто знак % экранировать

Страницы: 1

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


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.