Java -jar 启动服务时,采用 > 重定向日志文件,采用 logrotate的copytruncate参数归档日志文件,产生几十M的文件空洞。
说明
java -jar
日志文件保存时候使用 >
将其保存,对文件进行清除和日志切割(logrotate
)时,容易出现文件空洞。需要使用 >>
可以避免该问题。
同理,在用 fopen
打开或创建日志文件时,打开方式使用w
类似于>
,使用a
类似于>>
。如果需要对日志文件进行logrotate
备份,最好使用a
方式创建或打开。
以上情况发生的条件是,日志文件一直处于打开状态,进程没有被重启,如果进程在备份完成之后重新启动或运行,则不会导致文件空洞,因为文件的offset
指示器已经到了文件头。