LINUX定时删除数据
开发过程中,为了便于查找问题和维护,日志是不可缺少的,但是随着时间的推移,日志记录会越来越多,越来越大,这时候我们就需要定期清理一些日志,保留最近的一段时间即可。先熟悉一下linux的时间。
1:时间
linux有三种时间状态:ctime、mtime和atime
atime:Access Time 最后一次访问文件(读取或执行)或目录的时间 mtime:Modofy Time 最后一次修改文件(内容)或目录(内容)的时间 ctime:Change Time 最后一次改变文件(属性)或目录(属性)的时间
三种时间的查看方法
atime: ls -lu filename mtime: ls -l filename ctime: ls -lc filename
2:编写脚本
我们就根据时间来写,比如,我现在要清理7天前的数据,也就是今天除开,再保留7天数据,一共保留8天的数据。
新建一个log.sh的文件
#!/bin/bash #删除这个目录下的日志 PHP_LOG=/var/www/php/logs #这个等号两边不能有空格,否则报错 #for循环清除7天前日志 for rmfile in `find $PHP_LOG -mtime +6`; do rm -f $rmfile; done然后赋予执行权限:
chmod +x log.sh
这时候就可以直接运行这个文件了,一般是放在计划任务里面
3:可能遇到的问题
如果是在win上面编辑的脚本,运行的时候可能会报:/bin/bash^M: bad interpreter: No such file or directory
这个是因为,windows环境下的文件是dos格式,即每行结尾以\r\n来标识,而linux下的文件是unix格式,行尾则以\n来标识。
解决方法:
vi 打开文件 :set ff=unix保存退出即可