Shell删除非今天的日志

  • 原创
  • |
  • 浏览:395
  • |
  • 更新:

随着互联网的崛起,越来越多的公司都有自己的WEB服务,为能更好的排查问题,WEB服务也会随时进行记录日志。随着时间越来越长,将产生大量的日志文件。如何使使用简单快捷的命令删除日志文件呢?

工具/原料

  • 装有Linux系统的PC机一台

方法/步骤

  1. 1

    环境说明,小编的环境是Centos7。如下图所示:

    Shell删除非今天的日志
  2. 2

    说明需要删除的文件目录,小编需要删除“/usr/local/tomcat/logs/”目录下,非今天的日志文件。使用命令“ls -l /usr/local/tomcat/logs”,查看该目录下的文件。如下图所示:

    Shell删除非今天的日志
  3. 3

    今天的时间为“2020-08-07”。如下图所示:

    Shell删除非今天的日志
  4. 4

    使用命令“cd /root”命令回到root目录下。如下图所示:

    Shell删除非今天的日志
  5. 5

    使用vi或vim命令,创建del.sh文件。因小编习惯使用vim命令进行创建文件,便使用命令“vim del.sh”进行创建文件,如在使用该命令提示错误时,使用命令“vi del.sh”。如下图所示:

    Shell删除非今天的日志
    Shell删除非今天的日志
  6. 6

    在打开的文件中按下键盘上的“I”键,进入到文件编辑模式,此时文件框左下角将出现“insert或插入”字样。如下图所示:

    Shell删除非今天的日志
    Shell删除非今天的日志
  7. 6
    此文章未经授权抓取自百度经验
  8. 7

    声明shell脚本解释器,在脚本中输入“#!/bin/bash”。如下图所示:

    Shell删除非今天的日志
  9. 8

    接着在文件中声明变量“today=`date +%Y-%m-%d`或today=`date +%F`”,两条命令作用相同,都是将今天日期格式化为年月日的显示方式。如“2020-08-07”。如下图所示

    Shell删除非今天的日志
  10. 9

    输入命令“for i in `ls /usr/local/tomcat/logs* | grep -v $today`; do rm -f /usr/local/tomcat/logs/$i; done;”。如下图所示:

    Shell删除非今天的日志
  11. 10

    输入完成后,按下键盘上的“Esc”键,退出编辑状态,并同时按下键盘上“Shift + :”输入冒号“:”,接着在冒号后输入wq后,按下键盘上的“Enter”键进行保存文件。如下图所示:

    Shell删除非今天的日志
    Shell删除非今天的日志
    Shell删除非今天的日志
  12. 11

    使用命令“sh del.sh”执行脚本,执行完毕后使用命令“ll /usr/local/tomcat/logs”查看我们需要删除目录下的文件。如下图所示:

    Shell删除非今天的日志
  13. 12

    如想删除非今天日志外,还想保留文件“catalina.out、adam_authchat.log、test_apartmet.log”;只需在do作用域范围内使用if进行条件过滤即可。命令如下:

    if [[ "$i" == "catalina.out" || "$i" == "adam_authchat.log" || "$i" == "test_apartmet.log" ]]

    then

            continue

    else

            rm -f /usr/local/tomcat/logs/$i

    fi

    Shell删除非今天的日志
  14. 13

    再次使用命令“sh del.sh”执行脚本,执行完毕后使用命令“ll /usr/local/tomcat/logs”查看我们需要删除目录下的文件。如下图所示:

    Shell删除非今天的日志
  15. 14

    以下是小编整个脚本的内容,如有需要或参考可复制后进行使用。命令如下:

    #!/bin/bash

    today=`date +%Y-%m-%d`

    for i in `ls /usr/local/tomcat/logs* | grep -v $today`;

    do

    if [[ "$i" == "catalina.out" || "$i" == "adam_authchat.log" || "$i" == "test_apartmet.log" ]]

    then

            continue

    else

            rm -f /usr/local/tomcat/logs/$i

    fi

    done;

    Shell删除非今天的日志
  16. 15

    到此使用脚本删除非今天日志及条件删除日志就完成了,希望对你有所帮助!^V^

    END

注意事项

  • 如线上环境不建议删除tomcat下的日志,而是移动日志
  • 注意for语法
  • 注意if语法
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部