我正在使用catalina
和cron job
轮播shell script
个日志。
以下是日志轮换中使用的代码段
将现有catalina.out
备份到其他文件
cp -p $ORI_LOG_PATH $NEW_LOG_PATH
刷新现有的catalina.out
文件
cp /dev/null > $ORI_LOG_PATH
现在的问题是,有些时候(指出不要总是)可以在旋转的日志上看到一些垃圾字符(NULL,NULL,NULL....
)。
是什么导致了这个?
我正在使用Solaris 10
。
答案 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