linux下每天都在产生LOG日志文件,如果不定期删除,迟早挤爆硬盘,如果手动删除,几次可以,不是长久之计。这些事交给Linux系统就可以解决。
试验环境:
系统:CentOS 6.5 x64
测试路径、测试文件名、测试时间(2017-06-05)
执行命令:
1 | # find /root/Text -mtime +3 -name "log.*" -exec rm -f {} \; |
命令解释:
find 查找命令
/root/Text 查找路径
-mtime 文件最后修改时间
+3 3天前(或理解成从命令执行当前日期开始,当天不算,保留3个文件)
-name 查询方式为查询文件名
"log.*" 查找log开头后面为任意长度字符的文件(不明白可以找“正则表达式”教程看看)
-exec 固定写法
rm -f 符合条件的执行删除并不提示
{} 固定写法,注意左右有空格
\; 固定写法,注意左右有空格
-mtime说明一下,Linux中的文件的时间属性只有三个:
atime(Access time) 文件最后访问时间。
mtime(Modified time) 文件最后修改时间。
ctime(Change time) 文件最后修改权限时间。(比如执行过chmod)
用stat命令来看看文件详细信息,find会找到文件的Modified时间作为参数。
1 | # stat log.2017-06-01 |
有人注意到,文件名是06-01,但是显示时间是06-05,怎么回事。因为可以用"touch -d"命令来修改Modified,现在将文件修改回原来日期06-01。
1 2 3 | # touch -d "21:55 06/01/2017" log.2017-06-01 或 # touch -d 06/01/2017 log.2017-06-01 |
上面命令第一个是时间和日期都修改,下面那个是只修改日期。
另外也可以单独修改时间或者月份,如下
以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000 。
1 2 3 | touch -d "6:03pm" file touch -d "05/06/2000" file touch -d "6:03pm 05/06/2000" file |
1 2 3 | touch -d "2017-05-31 08:10:30" test .doc 同时修改文件的修改时间和访问时间 touch -m -d "2017-05-31 08:10:30" test .doc 只修改文件的修改时间 touch -a -d "2017-05-31 08:10:30" test .doc 只修改文件的访问时间 |
上面find命令,写好了我们加入系统自动执行。命令:
1 | # crontab -e |
打开后和操作vi编辑软件一样(因为crontab默认就是用vi来编辑的)
1 | # crontab -l |
列出内容,定义凌晨2点执行。
参考文章:
http://blog.csdn.net/maqingli20/article/details/7195408
https://zhidao.baidu.com/question/342860050.html
http://www.linuxidc.com/Linux/2015-11/124813.htm
http://www.2cto.com/os/201203/122934.html
本文转自 piazini 51CTO博客,原文链接:http://blog.51cto.com/wutou/1932446