我有一堆服务器(Centos 5.x)与Apache一起使用cronolog旋转日志.在一段时间后自动压缩和删除这些日志的最佳策略是什么?
CustomLog“| /usr/sbin / cronolog /var/log/httpd/my.examplehost.com/access_log-%Y%m%d”常见
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工作或类似的但没有说明如何做到这一点.
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