云服务器

一条Linux的小技巧-删除N天前文件

2017-12-14 14:10:04 0

你有遇过因为日志太多而导致磁盘满的尴尬事情吗?磁盘满了导致服务器运行不正常,很影响生产有木有!!!为了避免日志太多,我们只能定时删除日志。例如:日志只要保留三个月,超过三个月的日志统统删!删!删!那有什么办法好呢?方法有很多种,今天介绍一个命令:find命令

find命令有强大的查找功能,本文只是介绍根据文件名和创建时间来找文件,其他find命令用法可以man查看一下

语句使用:

find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} ;

例1:

find /var/log/ -mtime +90 -name ".log" -exec rm -rf {} ;

将/var/log/目录下所有90天前以".log"结尾的文件删除

find:Linux的查找命令,用户查找指定条件的文件

/var/log/:想要进行清理的任意目录

-mtime:标准语句写法

+90:查找90天前的文件,这里用数字代表天数,

PS:使用通配符 * 来泛匹配

.log表示查找以.log结尾的所有文件,""表示查找所有文件

-exec:固定写法

rm -rf:强制删除文件,包括目录

{} ; :固定写法,一对大括号+空格++;

如果需要长期监控log情况,可以将这些命令写到一个可执行脚本文件中,再设置cron计划任务执行,让系统定时去清理相关日志文件。

例2:

1.touch /root/clear.sh 新建一个shell脚本clear.sh

chmod +x clear.sh

2.vi /root/clear.sh

编辑clear.sh文件如下:

#!/bin/sh

find /var/log/ -mtime +60 -name ".log" -exec rm -rf {} ;

wq,保存退出

3.#crontab -e

将clear.sh文件加入到系统计划任务,到点自动执行

输入:

  • 3 * * */root/clear.sh

这里的设置是每天凌晨3点执行clear.sh,清理/var/log/目录下60天之前的日志。

 

注意:exec和file间是一个空格,file和{}间是一个空格,{}和;之间是一个空格,;是一个整体。

 

上一篇: 无

微信关注

获取更多技术咨询