在处理Apache日志问题上,保留30天的日志文件,其余的删除,经过自己动手写和网上查找有以下几种方法:
1、cd /usr/local/apache/logs/; ls -t | sed '31,$s/.*/rm -f &/'|sh 2>/dev/null
只要将这句写入crontab 中执行即可
ls -t 表示按时间排列,sed '31,$s/.*/rm -f &/' 从第31个开始在前面加上一个rm -f(即保留前30个) 最后将结果 传给sh执行
2.find /usr/local/apache/logs -ctime +1 -exec rm -rf {} \;
这个是本人想到最简单的语句 ,这个语句比较简单,这边就不做解释。
3.Log_count=`ls /usr/local/apache/logs | wc -l`
Del_log_count=$((${Log_count}-30))
if [ ${Log_count} -gt 30];then
ls -lt | awk 'print $NF' | tail -${Del_log_count} | xargs rm -rf
fi
第三个稍微复杂,不过还是比较容易理解,首先将logs目录下的所有文件列出并统计出数量,因为保留30天所以要删除的日志文件是 Log_count -30
,如果日志数量大于30的话就执行接下去的语句,ls -lt 列出日志文件的详细信息并且按照最新的时间排列。然后在根据awk截取出文件名,再经过tail把
要删除的日志文件显示出来最后传给rm -rf 并执行。
阅读(1809) | 评论(0) | 转发(0) |