道者编程

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
保存退出即可



最新评论:
我要评论:

看不清楚