由于过多的日志很占用磁盘空间,今天经理让我写一个脚本删除多余的日志、和es索引

定时删除试根据crontab+shell脚本实现的

crontab配置目录

/var/spool/cron/

该目录下存放的是每个用户(包括root)的crontab任务,文件名以用户名命名(添加命令后会自动生成root)

/etc/cron.d/

这个目录用来存放任何要执行的crontab文件或脚本。

crontab操作步骤

Step-One : 编辑任务脚本【分目录存放】【ex: backup.sh】
Step-Two : 编辑定时文件【命名规则:backup.cron】
Step-Three : crontab命令添加到系统crontab backup.cron
Step-Four : 查看crontab列表 crontab -l

Tomcat日志删除脚本

主要是shell脚本,第一次接触,写不好见谅(说明一下,公司多项目,所以用循环的方式删除)

#!/bin/bash
tomcat1="***-apiservice_beta"
tomcat2="***-gateway_beta"
tomcat3="***-mobile_beta"
tomcat4="***-mobile_preview"
tomcat5="***-portal_beta"
tomcat6="***-portal_preview"
tomcat7="***-portal-remote-freemarker_beta"
tomcat8="***-scheduler_beta" #设定删除多少天之前的日志
day= for tomcat in $tomcat1 $tomcat2 $tomcat3 $tomcat4 $tomcat5 $tomcat6 $tomcat7 $tomcat8
do
find /opt/tomcat-web-apps/$tomcat/logs -name "host-manager.*" -mtime +$day -exec rm -rf {} \;
find /opt/tomcat-web-apps/$tomcat/logs -name "localhost.*" -mtime +$day -exec rm -rf {} \;
find /opt/tomcat-web-apps/$tomcat/logs -name "manager.*" -mtime +$day -exec rm -rf {} \;
find /opt/tomcat-web-apps/$tomcat/logs -name "catalina.*" -mtime +$day -exec rm -rf {} \;
find /opt/tomcat-web-apps/$tomcat/logs -name "localhost_access_log*" -mtime + -exec rm -rf {} \;
find /opt/temp/$tomcat/logs -name "spring*" -mtime +$day -exec rm -rf {} \;
find /opt/temp/$tomcat/logs/access -name "access*" -mtime +$day -exec rm -rf {} \;
done

elasticsearch日志删除脚本

具体脚本根据实际需求来

#!/bin/bash
elastic_url=127.0.0.1
elastic_port=
day=
user_name=***
user_password=***
search_index1=**-log-gateway-service-main-beta
search_index2=**-log-gateway-service-access-beta
search_index3=**-log-portal-service-main-beta
search_index4=**-log-scheduler-service-main-beta
search_index5=**-log-service-main-beta
#删除早于day天的ES集群的索引 #获取当天时间
date2stamp () {
date --utc --date "$1" +%s
} #计算时间差
dateDiff (){
case $ in
-s) sec=; shift;;
-m) sec=; shift;;
-h) sec=; shift;;
-d) sec=; shift;;
*) sec=;;
esac
dte1=$(date2stamp $)
dte2=$(date2stamp $)
diffSec=$((dte2-dte1))
if ((diffSec < )); then abs=-; else abs=; fi
echo $((diffSec/sec*abs))
} for search_index in $search_index1 $search_index2 $search_index3 $search_index4 $search_index5
do
for index in $(curl -s "${elastic_url}:${elastic_port}/_cat/indices?v" -u ${user_name}:${user_password} | grep -E "${search_index}-20[0-9][0-9]\-[0-1][0-9]\-[0-3][0-9]" | awk '{ print $3 }';)
do
#循环当前索引的日期(这里获取时间的正则根据自己索引的名称来我们索引的格式为:**-log-service-main-beta-2020-03-04)
    date=$(echo ${index}| grep -Eo "20[0-9][0-9]\-[0-1][0-9]\-[0-3][0-9]")
      #当天日期
cond=$(date +%Y-%m-%d)
#时间差
diff=$(dateDiff -d $date $cond)
echo -n "${index} (${diff})"
if [ $diff -gt ${day} ]; then
echo " yes DELETE"
# curl -XDELETE "${elastic_url}:${elastic_port}/${index}?pretty"
else
echo " no DELETE"
fi
done
done

参考地址:

https://stackoverflow.com/questions/33430055/removing-old-indices-in-elasticsearch#answer-39746705

https://www.jianshu.com/p/838db0269fd0

liunx 使用crontab定时任务+shell脚本删除tomcat日志elasticsearch日志索引的更多相关文章

  1. shell脚本关闭tomcat

    使用shell脚本快速关闭tomcat,就是获取tomcat进程后,一起kill掉: #!/bin/sh #kill tomcat pid name=tomcat-emall pidlist=`ps ...

  2. Linux 执行定时任务 shell脚本

    Linux上面执行定时任务,我们可以利用crontab -e直接编辑定时任务 另外我们还可以写好shell脚本,定时去执行shell脚本,这两个方法都可以起到定时执行的作用 下面我详细说一下入如何执行 ...

  3. shell脚本切割tomcat的日志文件

    鉴于在调试logback和log4j的文件切割一直无法成功,随性用shell写个脚本用来切割tomcat下的日志文件(大家如果有在logback或log4j使用文件切割成功的话,可以留下使用方式,先谢 ...

  4. Linux定是调用shell脚本删除文件

    编写脚本 vi delbak.sh 代码如下: #!/bin/sh location="/home/mysql/backup/" find $location -mtime +7 ...

  5. shell脚本重启tomcat

    1. 新建shell空脚本文件,如 /home/tr.sh,并设置权限 # chmod 750 /home/tr.sh 2. 设置文件形式: # sed -e 's/\^M//g' /home/tr. ...

  6. shell脚本切割tomcat日志文件

    转自:http://www.cnblogs.com/lishun1005/p/6054816.html 鉴于在调试logback和log4j的文件切割一直无法成功,随性用shell写个脚本用来切割to ...

  7. shell脚本删除log日志

    删除log文件简单shell脚本 经常会遇到日志把磁盘占满的情况,引起低级故障.我个人在实际工作中,尝试了如下的方法,比较简单,而且快捷有效. #!/bin/bash # /root/log_dele ...

  8. 使用Shell脚本删除/清空日志文件

    话不多少,直接上代码: #!/bin/bash workdir=("/home/Tax_Punish_Ret/log_txt") #可填写多个路径, 用空格隔开 # 查找日志文件 ...

  9. 单独运行shell脚本与crontab运行shell脚本的区别

    crontab运行脚本存在两大问题:环境变量和路径,从而导致单独运行脚本没问题,但用crontab运行就报错. 1.环境变量 描述问题:crontab: usage error: no argumen ...

随机推荐

  1. 木兰国产编程语言 Mulan--附带下载地址

    我国自主研发的 编程语言:木兰. 中国新闻网 : http://www.cas.cn/cm/202001/t20200116_4731821.shtml 说明介绍 百度一番后,发现没有下载地址,没有官 ...

  2. 爬取豆瓣网图书TOP250的信息

    爬取豆瓣网图书TOP250的信息,需要爬取的信息包括:书名.书本的链接.作者.出版社和出版时间.书本的价格.评分和评价,并把爬取到的数据存储到本地文件中. 参考网址:https://book.doub ...

  3. SP10707 COT2 - Count on a tree II [树上莫队学习笔记]

    树上莫队就是把莫队搬到树上-利用欧拉序乱搞.. 子树自然是普通莫队轻松解决了 链上的话 只能用树上莫队了吧.. 考虑多种情况 [X=LCA(X,Y)] [Y=LCA(X,Y)] else void d ...

  4. C++ 与String有关的函数!!!

    String函数 1.字符串的输入 (1) string s; cin >> s;//碰到空格等分隔符会终端输入 /* string s; cin >> s;//如果输入 he ...

  5. 处理异常 ‘try’——‘except’ 方法

    try: name 2+' [][3] {}['k'] ret = int(input('number>>>')) print(ret*'*') except ValueError: ...

  6. C++析构、拷贝、赋值、移动拷贝函数的几个知识点(不全)

    怕忘了,写这:析构函数不会释放指针成员指向的对象. 众所周知,C++的类如果没有默认构造函数,会自动生成一个. 同理,如果没有复制构造函数即A::A(const A&){}这个函数 ,则系统也 ...

  7. Java出现次数最多的整数

    描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来.如果有两个元 ...

  8. selenium webdriver执行远程 第三方js解决方案

    今天一个朋友问我问题 考虑了下直接上代码,这是伪代码不能执行,但是给出了思路 代码 url = 'http://www.qingmiaokeji.cn/test.js' res = urllib.re ...

  9. 【15】ML项目流程与正交化

    结构化机器学习项目 一 ML项目流程 1,确立目标(确定开发/测试集 + 唯一最优化指标) 确定开发/测试集:开发/测试集应尽可能接近将来应用场景中的数据. 划分数据集:开发集和测试集大小足以评估模型 ...

  10. gulp常用插件之gulp-useref使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-useref这是一款可以将HTML引用的多个CSS和JS合并起来,减小依赖的文件个数,从而减少浏览器发起的请求次数.gulp-usere ...