#####################
## 脚本说明:定时清理指定目录下文件,当前时间几天前的文件
## 清理 时间:请调整 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
#执行.