`
lomis
  • 浏览: 10854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

按天分割备份Catalina.out

阅读更多

因公司项目用的是Tomcat,因为长时间运行导致Catalina.out文件过大,而影响运行效率。故设法解决此问题, 网上搜索到的处理方式都比较的繁琐,本人经过尝试最终效果都不是很理想,经过多次实验,把本人的处理方式记录如下:

1. 基本思路:首先把catalina.out文件定时备份,为了节省空间可以进行压缩(文档的压缩比还是挺高的)。    需要处理两个问题:编写按天备份压缩的脚本和设置系统任务定时执行脚本。

2.脚本内容:

#!/bin/bash
#By:Lomis, Time:2015/09/07, Version:1.0
# 本脚本主要用于隔天定时备份Tomcat的catalina.out日志.

##定义变量
tomcat_path="/usr/local/webapps/tomcat-7";
tomcat_log_path=$tomcat_path"/logs";

##获取时间
today=$(date +%Y-%m-%d);
log_file="catalina.out";
bak_file="catalina."$today".log";
bak_gz_file="catalina."$today".tar.gz";

if [ ! -f $tomcat_log_path"/"$bak_gz_file ];then
        if [ ! -f $tomcat_log_path"/"$log_file ]; then
                exit 0;
        fi
        if [ ! -f $tomcat_log_path"/"$bak_file ];then
           ##把新的日志连接到日志文件的末尾
           cat $tomcat_log_path"/"$log_file $tomcat_log_path"/"$bak_file;
        else
           ##复制文件
           echo 执行命令:cp -rf $tomcat_log_path"/"$log_file $tomcat_log_path"/"$bak_file;
           cp -rf $tomcat_log_path"/"$log_file $tomcat_log_path"/"$bak_file;
        fi

        ##清空catalina.out文件
        echo 执行命令:echo "" > $tomcat_log_path"/"$log_file;
        echo "" > $tomcat_log_path"/"$log_file;

        ##压缩备份文件
        echo 执行命令: tar -zcPvf $tomcat_log_path"/"$bak_gz_file $tomcat_log_path"/"$bak_file;
        tar -zcPvf $tomcat_log_path"/"$bak_gz_file $tomcat_log_path"/"$bak_file;

        ##删除原备份文件
        echo 执行命令: rm -rf $tomcat_log_path"/"$bak_file;
        rm -rf $tomcat_log_path"/"$bak_file;

fi
###删除30天前的日志文件
find $tomcat_log_path"/" -mtime +30 -name "*.log" -exec rm -rf {} \;

 因为脚本中我加了注释,就不多做解释了。

 

3.设置定时任务

   linux的定时任务需要用到crontab,。

   查询的资料说这个服务一般在安装系统的时候都会安装,但不会自己启动,需要自己手动启动下。

   但也有的linux系统可能没有安装,那就自己动手安装下。因为我的是centos系统,我用了yum install -y vixie-cron 这个命令进行的安装(安装很简单,不再赘述)。

  关于定时任务的设置,有个文章介绍的很详细,这里我把地址拿过来了:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html

 

我最终的定时任务设置:

57 23 * * * /usr/local/webapps/program/bakCatalina.sh

 


此方法可行,已经在我们的线上环境运行1个多月。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics