Сжатые журналы вращаются с хронологом

У меня есть несколько серверов (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
Другие вопросы по тегам