Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96955
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-18 23:43
文章分类

全部博文(16)

分类: LINUX

2014-08-12 22:16:42

在处理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 并执行。


阅读(1800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~