Linux下tomcat日志文件catalina占用空间过大导致空间不足的问题解决办法
更新日期:
最近代码写的好多,切换一下状态,把这个2月28日的草稿文章完成吧。
生产环境的磁盘空间满了,可以说是要爆了。
du -sh * 查询,发现tomcat的catalina.out这个日志太大了,这个文件tomcat控制台log输出文件。 怎么处理?
方法一:手动删除
1 | rm catalina.out touch catalina.out |
再查询一下磁盘空间,居然没有释放。 究其原因,主要是这个文件被tomcat打开状态,即使删除了,空间不会马上释放,这是linux的一些机制。重启tomcat,空间得到释放。
如果不想重启,怎么办? 有办法1
echo " " > catalina.out
缺点:需要手动定期执行。
方法二:改脚本catalina.sh
网上一大把介绍,难度高,不做推荐
方法三:分割工具cronolog
用这个工具更麻烦,安装工具,改catalina.sh脚本,还要重启服务。
参考: http://baalwolf.iteye.com/blog/1507454
方法四:使用linux自带的logrotate
可是,我偏偏是一个最(爱)求(瞎)完(折)美(腾)的人,最终在google上找到一个比较完美且简单的方案。
是英文的,文章为10年,但是在国内很少看到有人介绍次方案,在此翻译供中文用户参考。
原文: https://dzone.com/articles/how-rotate-tomcat-catalinaout
如果catalina.out增长到2GB, tomcat会挂掉,并且启动失败还没有错误消息。为了避免这种情况,你需要频繁的切换 catalina.out文件。这篇文章描述如何在linux/unix机器上设置好自动切换catalina.out文件。
如何每天或者当它大于5M,自动切换catalina.out 文件
创建文件
1
vi /etc/logrotate.d/tomcat
拷贝一下内容到上面这个文件
1
/usr/share/apache-tomcat-8/logs/catalina.out { copytruncate daily rotate 7 compress missingok size 5M }
上面这个文件配置:
- 确定 /usr/share/apache-tomcat-8/logs/catalina.out 就是你的tomcat的catalina.out路径
- daily - 每天切换 catalina.out
- rotate - 保持最多7个日志文件
- compress - 对切换出来的日志文件压缩
- size - 如果catalina.out文件大于5M,执行切换操作
别的不用操作了。:)
他是如何工作的
- 每晚cron后台执行
/etc/cron.daily/目录下的任务 - 这会触发
/etc/cron.daily/logrotate文件,通常这在linux安装的时候包含了。 它会执行命令/etc/cron.daily/logrotate /etc/logrotate.conf这个配置文件包含了所有在/etc/logrotate.d/的脚本。
4。 这会触发我们之前写的/etc/logrotate.d/tomcat文件。
手动运行logrotate
执行以下命令可以手动运行定时任务1
/usr/sbin/logrotate /etc/logrotate.conf
更多的logrotate选项
要看到你系统上所有的logrotate选项,查看手册:1
man logrotate