定期日志清理脚本

本文介绍如何使用find命令结合crond定期删除服务器上超过7天的日志文件,包括不同类型的日志,并通过grep进一步筛选确保仅删除包含日期格式的日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


任务的需求是定期删除服务器上的日志,删除规则是删除7天前的日志


目前根据文件的modifytime来进行修改


ls -lt 默认是按照修改时间排序


首先是查找 文件  find /usr/tomcat/ -mtime +7 -type f -name *.out 


如果希望查找更多后缀那么可以用 -o 参数  ,最好加上括号  

find /usr/tomcat -mtime +7 -type f  \(-name 'out.*' -o name '*.log' -o -name '*.txt' \) 


-mtime 7  往前推第7天的(一天)

-mtime +7 7天以前的

-mtime -7 7天前到现在的



找到文件后删除  

本可以用  find /usr/tomcat -mtime +7 -type f  \(-name 'out.*' -o name '*.log' -o -name '*.txt' \)  -exec  rm -rf  {}  \ ;

但是,查找到的文件有些并不是日志文件。

之后使用grep 进行 筛选

(find 里面不支持我这个正则表达式,一般就支持个通配符)。



find /usr/tomcat -mtime +7 -type f  \(-name 'out.*' -o name '*.log' -o -name '*.txt' \)  | grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' 


要删除只能通过管道


rm -rf  `find /usr/tomcat -mtime +7 -type f  \(-name 'out.*' -o name '*.log' -o -name '*.txt' \)  | grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' `



关于  crond


之前定义的是基于用户的crond任务 

使用 crontab -e  建立的就是 在 /var/spool/cron/ 下面建立一个用户名对应的文件 

如果要建立系统级别的 就直接编辑


/etc/crontab 文件


重启服务即可

/etc/rc.d/init.d/crond restart  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值