解决logrotate的copytruncate参数导致打开的文件产生空洞

发布时间: 更新时间: 总字数:306 阅读时间:1m 作者: 分享

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

说明

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

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

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

转载自互联网。

完毕。

Home Archives Categories Tags Docs