shell编程—自动备份tomcat日志详解

版权声明:所有文章都是自己原创,谢谢。 https://blog.csdn.net/weixin_42840933/article/details/83993415

一 . 实现功能

  1. 每天凌晨一点,将tomcat中的catalina.out日志压缩并备份到目标文件夹中,以当天日期为格式,然后清空日志。
  2. 删除超过15天的备份日志,并将logs中的其他日志文件每7天清空一次(如 localhost.2018-09-21.log等)

二 . 思路

  1. 用date函数截取当前时间日期
  2. 将logs中的catalina.out文件用gzip命令打包压缩移动到目标文件夹
  3. 用find命令清除更改时间为15天以前的压缩包
  4. 用find命令配合for循环清空7天以前的日志文件
  5. 用crontab定时命令每天凌晨一点执行一次此shell脚本

三 . 脚本内容

        #!/bin/bash
        d=`date +%Y-%m-%d`
        path1=/usr/local/myshell
        path2=/usr/local/tomcat/logs
        cd $path2
        gzip -c catalina.out>$path1/catalina.$d.gz
        cat /dev/null>$path2/catalina.out
        find $path1 -mtime +15 -name "*.gz" -exec rm -rf {} \;
        for i in `find $path2 -mtime +7 -name "*.log"`
            do cat /dev/null>$i
            done
        for l in `find $path2 -mtime +7 -name "*.txt"`
            do cat /dev/null>$l
            done

四 . 脚本详解

  1. date +%Y-%m-%d
    date命令 显示当前时间
    +” 加号为设定显示的日期格式
    %Y%m%d%H 小时 %M分钟 %S
  2. gzip -c catalina.out>$path1/catalina.$d.gz
    gzip 为压缩命令 压缩后缀为.gz
    格式为 gzip -命令 要压缩的文件>压缩后的路径文件
    -c 不改动原始文件
  3. cat /dev/null>$path2/catalina.out
    /dev/null 是一个黑洞文件 可以用于丢掉数据,任何进入她的数据都会丢失,将她导入任何文件,文件都会变成空白。
    cat进行查找并输入/dev/null中的内容进入日志,从而实现清空日志的目的
  4. find $path1 -mtime +15 -name "*.gz" -exec rm -rf {} \;
    find命令为查找
    -mtime 为内容被修改的时间(经常用于find 配合rm删除多少天前创建的文件)
    -ctime 为状态发生改变的时间(权限 位置等)
    -atime 为最近访问的时间
    +”为多少天前 “-”为多少天内
    -name 为名字符合name的文件
    -exec 将查找到的内容进行后续的操作
    {}代表find查到的结果
    是代表 -exec后的命令一直到结束
    \为转义
  5. for l in find $path2 -mtime +7 -name "*.txt"
    for 循环意味重复查找符合“”中条件的文件并进行清空文件的操作

五 . crontab定时任务

0 1 * * * /usr/local/myshell/tomcat.sh

crontab -e 可以编辑定时任务
0 1 * * *
这五个符号分别为 分钟 小时 日 月 星期
*为所有时间
所以上面的意思为每天凌晨一点运行一次tomcat.sh

猜你喜欢

转载自blog.csdn.net/weixin_42840933/article/details/83993415