我有一堆服务器(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