文章目录
  1. 1. 方法一:手动删除
  2. 2. 方法二:改脚本catalina.sh
  3. 3. 方法三:分割工具cronolog
  4. 4. 方法四:使用linux自带的logrotate
    1. 4.1. 如何每天或者当它大于5M,自动切换catalina.out 文件
    2. 4.2. 他是如何工作的
    3. 4.3. 手动运行logrotate
    4. 4.4. 更多的logrotate选项

最近代码写的好多,切换一下状态,把这个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. 创建文件

    1
    vi /etc/logrotate.d/tomcat
  2. 拷贝一下内容到上面这个文件

    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,执行切换操作

别的不用操作了。:)

他是如何工作的

  1. 每晚cron后台执行/etc/cron.daily/目录下的任务
  2. 这会触发/etc/cron.daily/logrotate文件,通常这在linux安装的时候包含了。 它会执行命令 /etc/cron.daily/logrotate
  3. /etc/logrotate.conf 这个配置文件包含了所有在 /etc/logrotate.d/ 的脚本。
    4。 这会触发我们之前写的 /etc/logrotate.d/tomcat 文件。

手动运行logrotate

执行以下命令可以手动运行定时任务

1
/usr/sbin/logrotate /etc/logrotate.conf

更多的logrotate选项

要看到你系统上所有的logrotate选项,查看手册:

1
man logrotate

文章目录
  1. 1. 方法一:手动删除
  2. 2. 方法二:改脚本catalina.sh
  3. 3. 方法三:分割工具cronolog
  4. 4. 方法四:使用linux自带的logrotate
    1. 4.1. 如何每天或者当它大于5M,自动切换catalina.out 文件
    2. 4.2. 他是如何工作的
    3. 4.3. 手动运行logrotate
    4. 4.4. 更多的logrotate选项