【发布时间】:2015-02-13 21:39:40
【问题描述】:
这是一个带有默认日志配置的 tomcat7 安装,只有在我们重新启动服务器时才会推出 catalina.out。由于它是产品服务器,我们不能经常重新启动它。我们有大量进入该文件的条目,这导致我们的 catalina.out 在几天内增长得非常高,直到它消耗了整个磁盘空间。
由于我们不想更改日志配置,因为它是被人偶化的,并且我们需要创建 devops 票证和所有那些缓慢的东西,所以我编写了一个 bash 脚本,它通过 crontab 每 5 分钟运行一次,这将减少当达到限制时,日志文件减半,脚本如下:
if [ $catalinaSize -gt $catalinaThreshold ]; then
middle=$(wc -l $catalinaLoc | awk '{ print $1 }')
middle=$(( $middle / 2 ))
sed -i -e 1,${middle}d $catalinaLoc
echo "+++ catalina.out was cut by half"
基本上,此脚本检查文件的当前大小并将其与阈值进行比较,然后使用 wc 和 awk 检索该文件中的行数,以便可以使用 sed 将文件减半。
我在其他环境中测试了该脚本并且它工作正常。问题是,在生产环境中成功运行了几天后,catalina.out 突然从几天前开始没有从 tomcat 获取任何日志条目。
我想到的解释是Tomcat由于减半操作而无法再写入该文件。
是否有可能知道是什么阻止了 Tomcat 写入该文件?
【问题讨论】:
标签: linux bash logging tomcat7