压缩用cronolog旋转的日志

我有一堆Apache的服务器(CentOS 5.x),其日志与cronolog一起旋转。 什么是一段时间后自动压缩和删除这些日志的最佳策略? CustomLog“| / usr / sbin / cronolog /var/log/httpd/my.examplehost.com/access_log-%Y%m%d”常见

我正在考虑创build一个刚刚说的cron脚本

gzip /var/logs/httpd/my.examplehost.com/* 

但是,这不也试图压缩Apache正在写入的文件? 在cronolog主页上,只提到你应该写你的cron作业或类似的,但没有说明如何做到这一点。

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