Linux教程

linux环境利用定时任务删除过期文件脚本

本文主要是介绍linux环境利用定时任务删除过期文件脚本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、编写shell脚本 task4delExpiredFiles.sh

#!/bin/bash
#配置定时任务方法
#crontab -e
#输入命令并保存退出  * * * * * /cloud/tesh/task4delExpiredFiles.sh >> /cloud/tesh/logs/task4delExpiredFiles_$(date "+\%Y-\%m-\%d").log 2>&1
function deleteFiles(){
    targetDir=$1
    
    if [ ! -d "$targetDir" ];then
       echo "===>target dir [${targetDir}] is not existed,exit."
       return
    fi
    formatedTimeStr=$(date -d @$beforeTimeStamp "+%Y-%m-%d %T")
    echo "=========>即将删除 $formatedTimeStr 之前的文件<========="
    operated='false'
    #根据文件修改时间升序排列
    for file in `ls -rt $1`
    do
      dir_or_file=$1"/"$file    
      filetimestamp=`stat -c %Y $dir_or_file`        
      timecha=$[$filetimestamp - $beforeTimeStamp]
      echo "time dif is "$timecha
      if [ $timecha -lt 0 ];then
        operated='true'        
        if test -f $dir_or_file
           then        
           echo "===>删除文件 $dir_or_file ..."
           rm -f $dir_or_file
        elif test -d $dir_or_file
          then
             echo "===>删除文件夹 $dir_or_file 中所有的文件..."
           rm -rf $dir_or_file
         fi
       fi
    done
    if [ $operated = 'true' ];then
      echo "===>删除过期文件完成."
    else
      echo "===>没有符合条件的过期文件,退出."
    fi
    echo "======================================================="
    
}
#源文件根目录,手动配置
base_file_dir=/cloud/tesh/file
#获取当前时间戳,单位为秒,date --date=20151117 +%s  将指定时间转换为秒
current_timeStamp=`date +%s`
#文件最大保留天数
max_file_keep_days=7
#计算时间差,单位为秒
let "diff=$max_file_keep_days*24*60*60"
let "beforeTimeStamp=$current_timeStamp-$diff"
echo "before is "$beforeTimeStamp
#调用删除文件函数
deleteFiles $base_file_dir 

二、编写定时任务

执行命令 crontab -e
输入如下文本保存退出即可
* * * * * /tesh/task4delExpiredFiles.sh >> /tesh/logs/task4delExpiredFiles_$(date "+\%Y-\%m-\%d").log 2>&1
这篇关于linux环境利用定时任务删除过期文件脚本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!