Tomcat catalina-deamon.out 日志切割 每天生成一个文件
Tomcat 使用 jsvc 以守护进程的方式启动(daemon.sh )。这样tomcat自身将会生成另外一个日志文件(catalina-daemon.out),而不是之前的catalina.out,而且catalina-daemon.out日志不会自动切割,会越来越大。
以前遇到过一个问题,就是网站突然访问空白,排查到最后发现是当前进行了网站打包备份操作,有一个超过2GB的压缩包。删掉后立马页面访问正常。具体原因还不清楚。
同时从运维角度和日志分析角度思考,日志文件最好做切割处理,并日志文件不宜过大。
想了想,还是使用linux的crontab的定时任务吧,
编写一个shell脚本,脚本放到 /etc/cron.daily目录下,代码如下:
#!/bin/bash
thedate=`date --rfc-=date`
predate=`date +%Y-%m-%d --date="-7 day"` rmfile="/xxxx/server/tomcat/logs/catalina-daemon.${predate}.out"
outfile="/xxxx/server/tomcat/logs/catalina-daemon.out"
if [ -f ${rmfile} ];then
rm -f ${rmfile}
fi if [ -f ${outfile} ];then
cp ${outfile} /xxxx/server/tomcat/logs/catalina-daemon.${thedate}.out
echo "" > ${outfile}
fi exit
#!/bin/bash
thedate=`date --rfc-=date`
predate=`date +%Y-%m-%d --date="-7 day"` rmfile1="/xxxxx/server/tomcat/logs/catalina-daemon.${predate}.out"
rmfile2="/xxxxx/server/tomcat/logs/p2p.log.${predate}"
rmfile3="/xxxxx/server/tomcat/logs/localhost.${predate}.log"
rmfile4="/xxxxx/server/tomcat/logs/host-manager.${predate}.log"
rmfile5="/xxxxx/server/tomcat/logs/catalina.${predate}.log"
outfile="/xxxxx/server/tomcat/logs/catalina-daemon.out" for rmfile in "${rmfile1}" "${rmfile2}" "${rmfile3}" "${rmfile4}" "${rmfile5}"
do
if [ -f ${rmfile} ];then
rm -f ${rmfile}
fi
done if [ -f ${outfile} ];then
cp ${outfile} /xxxxx/server/tomcat/logs/catalina-daemon.${thedate}.out
echo "" > ${outfile}
fi exit
检查是否配置好了自动执行配置 ,cat /etc/crontab,没有就加行下文的红色部分。
[root@xxxxServer /]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/ # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed #run-parts
* * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
* * root run-parts /etc/cron.weekly
* * root run-parts /etc/cron.monthly
查看crond服务是否运行:
pgrep crond
或
/sbin/service crond status
或
ps -elf|grep crond|grep -v "grep"
crond服务操作命令:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
设置crond随机启动
chkconfig crond on
好了,现在就不用担忧日志文件过大问题了!
同时上面的脚本会每天运行一次,并删除七天之前的日志文件,具体时间,可自己设定。
PS:
http://www.cnblogs.com/xd502djj/archive/2010/12/29/1919478.html
http://www.jb51.net/article/34332.htm
http://www.cnblogs.com/panblack/archive/2013/05/30/split_tomcat_catalina_out.html
http://desert3.iteye.com/blog/1393541
Tomcat catalina-deamon.out 日志切割 每天生成一个文件的更多相关文章
- 将String类型的二维数组中的元素用FileOutputStream的write方法生成一个文件
将String类型的二维数组中的元素用FileOutputStream的write方法生成一个文件import java.io.File;import java.io.FileOutputStre ...
- spark中saveAsTextFile如何最终生成一个文件
原文地址: http://www.cnblogs.com/029zz010buct/p/4685173.html 一般而言,saveAsTextFile会按照执行task的多少生成多少个文件,比如pa ...
- Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件
Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...
- Shell 从日志文件中选择时间段内的日志输出到另一个文件
Shell 从日志文件中选择时间段内的日志输出到另一个文件 情况是这样的,某系统的日志全部写在一个日志文件内,所以这个文件非常大,非常长,每次查阅的时候非常的不方便.所以,相关人员希望能够查询某个时间 ...
- 100个Shell脚本——【脚本8】每日生成一个文件
[脚本8]每日生成一个文件 要求:请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为)2017-07-05.log, 并且把磁盘的使用情况写到到这个文件中,(不用考虑c ...
- tomcat 使用log4j进行日志切割
因为tomcat catalina.out日志不会自己主动切割, 一.日志切割所需包在附近中 1. 压缩包中有三个jar包: log4j-1.2.16.jar tomcat-juli ...
- 配置好Nginx后,通过flume收集日志到hdfs(记得生成本地log时,不要生成一个文件,)
生成本地log最好生成多个文件放在一个文件夹里,特别多的时候一个小时一个文件 配置好Nginx后,通过flume收集日志到hdfs 可参考flume的文件 用flume的案例二 执行的注意点 avro ...
- 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL
场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad+ ...
- 分割catalina.out 每天生成一个文件
1. touch xxx(文件名字).sh 2. vim xxx.sh 写入 ----------------------- #!/bin/sh cd `dirname $0`pwdd=`d ...
随机推荐
- python获取上一个月第一天0点的unix时间戳
这两天做统计,需要用到当月第一天0点0分0秒的unix timestamp,上个月第一天0点的unix时间戳,三个月前月第一天的0点的Unix时间戳,六个月前当月第一天的0点的Unix时间戳,现在整理 ...
- C和C++的内存操作小贴士(一):const char*的内存释放问题
C和C++的内存操作一直是困扰开发人员的老问题,基本概念相信老司机们都很清楚了,在这里就不做过多的描述了,只是把在实际开发中可能遇到的一些小问题的案例列举下,供大家参考.“C和C++的内存操作小贴士” ...
- model ,orm,dao,service,持久层 ,mvc 这些名词在java中的概念?
这些概念不针对某个特定的编程语言. view层:结合control层,显示前台页面. control层:业务模块流程控制,调用service层接口. service层:业务操作实现类,调用dao层接口 ...
- 解决maven jmxtools 缺失的问题
原因:有版权,所以maven仓库基本都下架了jmxtool. 目前可用的,我就找到了wso2这家,配置如下: <project xmlns="http://maven.apache.o ...
- 当SQL UPDATE遇到EXISTS(SELECT ...)时
直接上例子. user表: ; -- ---------------------------- -- Table structure for user -- --------------------- ...
- MyBatis分页
搞清楚什么是分页(pagination) 例如,在数据库的某个表里有1000条数据,我们每次只显示100条数据,在第1页显示第0到第99条,在第2页显示第100到199条,依次类推,这就是分页. 分页 ...
- mysql函数find_in_set()
SELECT FIND_IN_SET('b','a,b,c,d'); 结果:2 SELECT * from video where find_in_set(id,'1,2,3,4'); 查找id在‘1 ...
- CI框架 -- 核心文件 之 Model.php
class CI_Model { /** * Class constructor * * @return void */ public function __construct() { log_mes ...
- Java NIO案例
Java 网络IO编程总结(BIO.NIO.AIO均含完整实例代码) http://blog.csdn.net/anxpp/article/details/51512200 Java NIO框架N ...
- interpro 数据库
interpro 通过整合多个蛋白相关的数据库,提供了一个方便的对蛋白序列进行功能注释的平台,功能注释的内容包括蛋白质家族预测,domain 和 结合位点预测 interoro 在整合多个数据库的同时 ...