使用shell脚本的tomcat catalina日志轮换

时间:2014-11-13 08:25:54

标签: shell solaris

我正在使用catalinacron job轮播shell script个日志。

以下是日志轮换中使用的代码段

  1. 将现有catalina.out备份到其他文件

    cp -p $ORI_LOG_PATH $NEW_LOG_PATH

  2. 刷新现有的catalina.out文件

    cp /dev/null > $ORI_LOG_PATH

  3. 现在的问题是,有些时候(指出不要总是)可以在旋转的日志上看到一些垃圾字符(NULL,NULL,NULL....)。 是什么导致了这个?

    我正在使用Solaris 10

1 个答案:

答案 0 :(得分:0)

此问题是由于使用#!/bin/sh shebang的tomcat启动脚本造成的。在Solaris上,这是原始的非POSIX Bourne shell。

在该启动脚本中,使用catalina.out重定向编写>>

现代shell >>是使用O_APPEND标志实现的,但是使用旧版Bourne shell,它是通过在写入之前寻找文件末尾来实现的。

副作用是如果您在文件打开时将其清空,则catalina.out文件将转换为开头处具有虚拟NULL的稀疏文件。

解决方法很简单,用以下内容替换tomcat *.sh脚本中的shebang:

#!/usr/xpg4/bin/sh

#!/bin/ksh

#!/bin/bash