网络运营

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

你有遇过因为日志太多而导致磁盘满的尴尬事情吗?磁盘满了导致服务器运行不正常,很影响生产有木有!!!为了避免日志太多,我们只能定时删除日志。例如:日志只要保留三个月,超过三个月的日志统统删!删!删!那有什么办法好呢?方法有很多种,今天介绍一个命令: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和{}间是一个空格,{}和\;之间是一个空格,\;是一个整体。

Be the First to comment.

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注