У меня есть два каталога (~ / www / и ~ / client-sites /), которые содержат кучу сайтов, каждый с файлами access.log и error.log.
Как проще всего найти все эти файлы и очистить их содержимое? Они быстро растут, поэтому я хотел бы очищать журналы примерно раз в месяц.
Установите logrotate (Windows см. http://sourceforge.net/projects/logrotatewin):
# CentOS/RHEL
yum install logrotate
# Debian/Ubuntu
apt-get install logrotate
Создать / Редактировать /etc/logrotate.d/httpd
, Пример взят из CentOS, требуется настройка для других дистрибутивов.
/var/log/httpd/*_log {
weekly
missingok
rotate 5
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/httpd reload > /dev/null
endscript
}
Тоа действительно делают то, что вы просили
find ~/www/ and ~/client-sites/ \( -name 'access.log' -o -name 'error.log' \) \
-exec sh -c '> "$1"' -- {} \;
Это обрежет каждый файл, соответствующий любому имени файла в любых подкаталогах, до 0 байтов.
Веб-сервер apache поставляется с утилитой под названием rotatelogs
, который можно использовать для управления файлами журнала.
Да, его почти не используют в дистрибутивах.
Нет, они не знают лучшего - они просто невежественны.