因公司项目用的是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".out";
- 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
- ##复制文件
- 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;
- ##清空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 {} \;
因为脚本中我加了注释,就不多做解释了。
伦理片 http://www.dotdy.com/
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个多月。