Сжатые журналы вращаются с хронологом
У меня есть несколько серверов (Centos 5.x) с Apache, чьи журналы чередуются с cronolog. Какова наилучшая стратегия автоматического сжатия и удаления этих журналов через определенное время? CustomLog "|/usr/sbin/cronolog /var/log/httpd/my.examplehost.com/access_log-%Y%m%d" общий
Я думал о создании сценария cron, который просто говорит
gzip /var/logs/httpd/my.examplehost.com/*
Но разве это также не пытается сжать файл, в который сейчас пишет apache? На домашней странице cronolog есть только упоминание о том, что вы должны написать свою работу в cron или что-то подобное, но не указывать, как это сделать.
1 ответ
Logrotate действительно инструмент для этой работы, но если вы не можете его использовать, то вы можете использовать find
и -ctime
patameter
find /var/logs/httpd/my.example.host.com/ -ctime +0 -not -name '*.gz' -exec gzip {} \;
должен делать то, что вы хотите, так как он находит файлы, которые были изменены>24 часа назад, которые еще не сжаты, и сжимает их.
Чтобы убедиться, что файл, над которым вы работаете, еще не открыт, вы можете сделать что-то вроде
#!/bin/bash
for file in $(find /var/logs/httpd/my.example.host.com/ -ctime +0 -not -name '*.gz')
do
lsof | grep $file
if [$? -eq 1 ]
then
gzip $file
fi
done