• 定时清理文件shell脚本


    一个测试机上部署多个应用,总是经常出现磁盘空间已满,不能部署应用的情况,所以写了个小脚本,用于定时清理日志,避免出现这种情况。


    1、如果是清理固定路径下的文件,可以直接用命令方式。       
    命令方式
        (1)编写命令:
           find /*/logs -name 'catalina.out*.log' -and  -mtime +7
         测试方法:把路径中的*变为具体的路径,在linux命令窗口中执行,调试结果(-mtime +7为删除最后修改时间在7天以前的文件,可自己配置)
        (2)在linux上配置定时任务
          
            说明:因为我们使用的是系统的crontab文件,系统的crontab文件路径为:/etc/crontab
            编辑crontab文件:
             命令:vi /etc/crontab
                 输入I;进入编辑模式
                 在文件末尾写入步骤一的命令
                 配置任务定时时间:
             crontab定时配置说明: 
              *(分)  *(时)   *(天)  *(月)  *(星期)
             
              crontab中最终写入的命令为: 23 59 * * * root find /*/logs -name 'catalina.out*.log' -and  -mtime +7 -type f |xargs rm(每天23:59分开始执行此命令
         
           (3)检验定时任务是否执行:
              命令: tail /var/spool/mail/root

                (4)若定时任务没有执行,输入命令   service crond status,确保crond状态为 is  running

    2、但是有时候需要同时清理多个路径下的指定文件,这时,我们最好就写个shell脚本了,下面是shell脚本的实现方式
    shell脚本方式:
        (1)vi /*/deletelog.sh(脚本路径可变,保证在path变量中就可以)
         脚本:
        #!/bin/bash         
      	workdir=("/export/Domains" "/home/admin")#可填写多个路径
      for wdir in ${workdir[@]}
     	 do
              echo  filepath is $wdir
              if [ $wdir =  ${workdir[0]} ] ;then
                 fileStr=`find  $wdir/*/logs -type d`
                 echo files is $fileStr
              else
                 fileStr=`find  $wdir -type d`
                 echo filee is $fileStr
              fi
             for dir in $fileStr
              do
                    echo file name is $dir        
                    find $dir -name '*log*' -and -mtime +7  -type f | xargs rm
                    if [ $? -eq 0 ];then
                            echo $date delete $dir success!            
                    else
                            echo $date delete $dir FAILD!           
                    fi
              done
      done
          
        (2)赋给deletelog.sh 文件执行权限

                                   命令:chmod 700    /*/logs/deletelog.sh

          (3)编辑crontab文件: 
             命令:vi /etc/crontab
                 输入I;进入编辑模式
                 在文件末尾写入步骤一的命令
                 配置任务定时时间:
             crontab定时配置说明: 
              *(分)  *(时)   *(天)  *(月)  *(星期)
             
              crontab中最终写入的命令为: * 9 * * * root /*/deletelog.sh >> /export/*/deletelog.log(带输出日志)
  • 相关阅读:
    WCF HelpPage 和自动根据头返回JSON XML
    Jquery及插件 应用
    Autofac Mvc Webapi注入笔记
    TransactionScope 出错 与基础事务管理器的通信失败
    工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)
    Asp.net的异步处理模型Asp.net的异步如何提高服务器的吞吐量
    WCF 契约定义命名空间 的疑问
    常用的18个人情世故
    StatusCode
    web标准常见问题集合
  • 原文地址:https://www.cnblogs.com/beilai/p/6293224.html
Copyright © 2020-2023  润新知