Java -jar 启动服务时,采用 > 重定向日志文件,采用 logrotate的copytruncate参数归档日志文件,产生几十M的文件空洞。

说明

java -jar 日志文件保存时候使用 > 将其保存,对文件进行清除和日志切割(logrotate)时,容易出现文件空洞。需要使用 >> 可以避免该问题。

同理,在用 fopen 打开或创建日志文件时,打开方式使用w类似于>,使用a类似于>>。如果需要对日志文件进行logrotate备份,最好使用a方式创建或打开。

以上情况发生的条件是,日志文件一直处于打开状态,进程没有被重启,如果进程在备份完成之后重新启动或运行,则不会导致文件空洞,因为文件的offset指示器已经到了文件头。

转载自互联网。

完毕。