Автоматическая чистка от старых логов - то что нужно, для поддержания свободного места на диске сервера. Вот один из методов - утилита 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 !!!!!!!!!!!!!!!!!!!!!!!!
Например найдем файлы логов старее 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 {} \;
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
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
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
Комментариев нет:
Отправить комментарий