任务的需求是定期删除服务器上的日志,删除规则是删除7天前的日志
目前根据文件的modifytime来进行修改
ls -lt 默认是按照修改时间排序
首先是查找 文件 find /usr/tomcat/ -mtime +7 -type f -name *.out
如果希望查找更多后缀那么可以用 -o 参数 ,最好加上括号
find /usr/tomcat -mtime +7 -type f \(-name 'out.*' -o name '*.log' -o -name '*.txt' \)
-mtime 7 往前推第7天的(一天)
-mtime +7 7天以前的
-mtime -7 7天前到现在的
找到文件后删除
本可以用 find /usr/tomcat -mtime +7 -type f \(-name 'out.*' -o name '*.log' -o -name '*.txt' \) -exec rm -rf {} \ ;
但是,查找到的文件有些并不是日志文件。
之后使用grep 进行 筛选
(find 里面不支持我这个正则表达式,一般就支持个通配符)。
find /usr/tomcat -mtime +7 -type f \(-name 'out.*' -o name '*.log' -o -name '*.txt' \) | grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}'
要删除只能通过管道
rm -rf `find /usr/tomcat -mtime +7 -type f \(-name 'out.*' -o name '*.log' -o -name '*.txt' \) | grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' `
关于 crond
之前定义的是基于用户的crond任务
使用 crontab -e 建立的就是 在 /var/spool/cron/ 下面建立一个用户名对应的文件
如果要建立系统级别的 就直接编辑
/etc/crontab 文件
重启服务即可
/etc/rc.d/init.d/crond restart