ES索引清理(按保存时间和索引前缀)以及shell eval使用说明

 clean_es_index.sh

#!/bin/bash
while read line;do
  key=`echo $line|awk -F = '{print $1}'`
  val=`echo $line|awk -F = '{print $2}'`
  eval "${key}=${val}"
done < ./env.cfg

echo "保存时间==${save_days}" >> ${clean_log}
del_time=$[$[$(date +%s%N)/1000000]-(86400000*$save_days)]
echo "删除截止时间==${del_time}" >> ${clean_log}
index_times=$(curl -s -u  ${es_username}:${es_passward}  "${es_server_ip}:${es_server_port}/_cat/indices?h=i,cd"|awk '{print $1,$2}')
echo "${index_times}" >> ${clean_log}
indexs=(${index_times// / })
echo "all index size==="${#indexs[@]}
for(( i=0;i<${#indexs[@]};i++));do
  if [ $(($i%2)) -eq 0 ];then
    indexname=${indexs[i]}
    indextime=${indexs[i+1]}
    if [ $indextime -lt $del_time ];then
      for delete_index in ${delete_indexs[@]};do
        if [[ $indexname =~ $delete_index ]];then
          del_result=`curl -s -u  ${es_username}:${es_passward}  -XDELETE "${es_server_ip}:${es_server_port}/"${indexname}"?pretty" |sed -n '2p'`
          echo "删除截止时间==${del_time} 数组下标==$i 索引创建时间==${indextime} 索引名称==${indexname} 删除结果==${del_result}" >> ${clean_log}
        fi
      done
    fi
  fi
done

env.cfg

clean_log=/root/log_es_clean.log
save_days=1
es_server_ip=192.168.44.20
es_server_port=9200
es_username=admin
es_passward=admin123
delete_indexs=(dw_span_model dw_trace_model dw_trace_min_summary_model dw_trace_hour_summary_model dw_trabizattr_model)

顾名思义,上面这两个脚本是做es索引清理的,在使用eval读取字典文件的时候报了下面这个异常

开始一直使用cat去看文件有什么不对劲,但是一直没有发现问题,最后在vi的时候才发现env.cfg最下面有个空行,导致了报错

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值