linux定时清理指定目录下特定时间段的文件脚本

#####################
## 脚本说明:定时清理指定目录下文件,当前时间几天前的文件
## 清理 时间:请调整 delayDate  变量中 "10" 数字
## 监控路径 :请调整 arrlogFile 变量中的值
#####################
#======================定义全局变量 begin===========================
#限制的容量大小单位k  
delayDate=10
#监控路径,多个路径以空格隔开
arrlogFile=("/var/log/presto" "/var/log/kafka"  "/var/log/kudu" )
hosts=("host1" "host2" )
now=$(date +%s) #获取当前运行时间
#======================定义全局变量 end=============================
#循环迭代配置的扫描目录 启动多个线程扫描任务
for ((j=0;j<${#hosts[@]};j++))
do
{
for ((i=0;i<${#arrlogFile[@]};i++)) do
 #迭代当前host
 currentHost=${hosts[$j]}
 #迭代当前目录文件
 currentFile=${arrlogFile[$i]}
 echo $currentHost---$currentFile
 if ssh $currentHost test -e $currentFile; then #判断在当前host上 目录是否存在 如果存在执行操作
      echo '清理开始'
      for file in `ssh $currentHost "cd $currentFile;ls -l|awk '{print $9}'" | awk '{print $9}'`  #列出目录下所有文件
        do  
                if ssh $currentHost test -f $currentFile/$file;  then
                        dir_date=`ssh $currentHost "cd $currentFile;ls -l --time-style=full-iso $file" | awk '{print $6}'`  #文件时间
                        #当前时间与文件的时间只差,换算成天
                        difference=$(( ( $now - $(date -d "$dir_date" +%s) ) / (24 * 60 * 60 ) )) 
                        #计算比较日志保留天数
                        if [ $difference -gt $delayDate ]; then   #时间超过存留时间 清理文件
                             ssh $currentHost "cd $currentFile;rm -rf $file" #删除文件
                        fi  
                fi  
      done   
  fi
 done
} &
done
wait
echo "监控结束"
#直接通过命令 
#chmod 750 monitorLogs_date.sh
#./monitorLogs_date.sh
#或sh monitorLogs_date.sh 
#执行.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值