我在使用 logrotate 旋转一个不断写入的日志文件时遇到问题。我正在使用 copytruncate 选项,它在第一次旋转时正确完成工作,但之后,所有新的旋转都会在顶部留下一个带有二进制数据的文件,并且操作系统显示的文件大小比以前更大。二进制数据意味着我错过了日志,我可能对此没意见,但增加文件没有任何意义。
另外,当我使用“du -ah”查看尺寸时,尺寸看起来还可以,即新文件的尺寸与旋转后的文件相比要小,但使用“ls -lh”显示相同尺寸时,尺寸却增加了。
我认为操作系统仍然将所有这些视为单个文件,但我可能是错的。
请帮助我解决此事。
谢谢
答案1
写入日志文件的程序已将其打开为写入模式而不是附加模式。这样,截断后您将获得一个开头有洞的稀疏文件,因为程序一直在最后的位置写入。