zoukankan      html  css  js  c++  java
  • Linux find命令结合Atime Mtime Ctime 时间删除指定时间日志

    工作中遇到了生产系统中相关日志太多,占据大量磁盘空间,所以准备写一个crontab任务进行定期删除日志,只保留近五天的log信息。

    Linux系统中文件存在三种时间属性,分别是:

    Atime Mtime Ctime

    三种时间分别是访问时间,修改时间,状态时间;

    访问时间:对文件进行一次读操作,它的访问时间就会改变。例如像:cat、more等操作,但是state还有ls命令对atime是不会有影响的

    修改时间:文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出来的文件时间就是这个时间,当用vim对文件进行编辑之后保存,它的mtime就会相应的改变

    状态时间:当文件的状态被改变的时候,状态时间就会随之改变,例如当使用chmod、chown等改变文件属性的操作是会改变文件的ctime的。

    此处需要记住一个命令:stat,查看文件或者文件系统的状态 ,可以查看时间等属性

    当然,既然可以查看当前的atime、mtime、ctime,那肯定也可以查看几天前或者几天之内被改过或者访问过的文件。

    Linux提供了一个简便的查询方式,那就是 +n 和 -n。以 -mtime 举例说明:

      -mtime n : n为数字,意思为在n天之前的一天之内被更改过内容的文件

      -mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名

      -mtime -n : 列出在n天之内(含n天本身)被更改过内容的文件名

    找 “5天之内被更改过的档案名” 就是   find / -mtime -5 ,找“5天前的那一天被更改过的档案名” 就是   find / -mtime 5 ,找“5天之前被更改过的档案名” 就是   find / -mtime +5。我们可以看出有没有 “+,-”的差别是很大的。下面用图来说明一下:

        由这个时光轴我们可以知道,最右边为当前时,+5 代表大于等于 6 天前的档案名, -5 代表小于等于 5 天内的档案名,5 则是代表 5-6 那一天的档案名。

    所以在日志目录中保留最近五天的文件,五天前前的文件自动删除。

        find  /opt/app/log  -mtime  +5 -type  f  -name  *.[12]log  -exec  rm  -rf  {} \;
         /email/v1_bak --设置查找的目录;
         -mtime +5           --设置时间为91天前;
         -type f                 --设置查找的类型为文件;
         -name *.[12]log   --设置文件名称中包含1log或者2log
         -exec rm -f          --查找完毕后执行删除操作;

    将此命令写入crontab后即可自动完成查找并删除的工作了。

    或者用:find . -mtime +5 -type f | xargs rm -rf

    1、编写清理日志脚本clearlogbefore5days.sh

       #!/bin/sh
       find   /opt/log  -mtime +5  -name "*.log" -exec rm {} \;

    2、给脚本授权

        chmod  +x  clearlogbefore5days.sh

    3、加入定时执行任务

        crontab -e

        在最后加入:00 2 * * *  root   /home/slynux/clearlogbefore5days.sh

     

  • 相关阅读:
    免费的编程中文书籍索引
    整理书签博客和文章
    【De8ug玩docker】-Docker常用命令操作
    Linux中的那些英文缩写和她的含义们
    Docker和DevOps是找工作必备技能
    【De8ug玩docker】-命令行只显示-bash-4.1#
    应该知道的Linux技巧
    阿里云服务器linux(centos)常用命令
    jQuery运维开发之第十七天
    js+dom开发第十六天
  • 原文地址:https://www.cnblogs.com/liujiarui/p/11871430.html
Copyright © 2011-2022 走看看