понедельник, 19 марта 2012 г.

Files auto remove

Автоматическая чистка от старых логов - то что нужно, для поддержания свободного места на диске сервера. Вот один из методов - утилита find.
Например найдем файлы логов старее 10 дней.

find /var/log -mtime +10

Файлы старее 30мин.

find /var/log -mmin +30

Одна из опций утилиты find может выполнять команды, с тем что было найдено:

find /var/log/* -mtime  +5 -exec rm {} \;

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

find /spool2/monitor/* -mtime +90 -exec mv {} /oldspool/ \;

Теперь можно добавить в /etc/crontab для зачистки, в начале каждого месяца:

0 0 1 * * root  find /spool2/monitor/* -mtime +90 -exec mv {} /oldspool/ \;

Удалим большие файлы >100Mb

find /var/log/  -size  +100M  -exec rm  -R {}  \;

Удаляем старые записи для астериска автоматически первого числа в /etc/crontab

0 0 1 * * root find /var/spool/asterisk/monitor/* -mtime +150 -exec rm -R {} \;


 если 

bash: /usr/bin/find: Argument list too long  !!!!!!!!!!!!!!!!!!!!!!!!
тогда убрать *
find /data/g-voip/sd/ -mtime +365 -exec rm -R {} \;

---------как----автоматизировать----------------------------------------------

Скрипт контроля объема папки
space="$(du -s /var/log/remote/ | awk '{print $1}')"
space_limit=24000000
if  (( $space >  $space_limit ));
then
cd /var/log/remote/
ls -1t  | tail -n 10 | xargs -d '\n' rm -f
fi

Скрипт контроля  пространства на разделе:
#!/bin/bash -x
logfile=/opt/fs_projects/custom_scripts/monitoring/diskspace_check.log
use="$(df -h | grep CallRecords | awk '{print substr($5, 1, length($5)-1)}')"
# max space usage
use_limit=98
if  (( $use > $use_limit ));
then
cd /CallRecords/Inbound/
echo " ------ same records wil be deleted ---- $(date)" >> $logfile
ls -1t  | tail -n 100 >> $logfile
ls -1t  | tail -n 100 | xargs -d '\n' rm -f
else
echo "---- nothing to delete ----  $(date)" >> $logfile
fi
--------------------------------------------------
попробовать еще один способ
#!/bin/bash
find /cluster/conf/nginx/delivery -type f -mmin +2 -delete









Комментариев нет:

Отправить комментарий