4

我有一个生成日志文件的 php 脚本。另一方面,我有另一个脚本应该每小时运行一次来​​处理日志文件。

在我的第二个脚本中,我想在写入时复制并截断日志文件,而不会丢失任何数据。

在一个有限的测试中,我一直在使用重命名来创建副本,我得到了预期的结果

但我担心这种方法的正确性。

这样做安全吗?

4

1 回答 1

1

您正在做的事情称为“日志轮换”,是的,通过重命名日志文件来做到这一点是安全的。

  • 在 Linux 中,您可以在另一个应用程序写入文件时重命名文件,并且该应用程序将继续写入重命名的文件。有关详细信息,请参阅此 SO 答案

  • 在 Windows 中,如果打开文件的应用程序在调用CreateFile时设置了 FILE_SHARE_DELETE 标志,则只能重命名打开的文件。如果设置了该标志,它的工作方式与在 Linux 上的工作方式相同(应用程序继续写入重命名的文件)。如果未设置,任何重命名文件的尝试都将失败。

您可能还对logrotate命令感兴趣。

于 2012-08-16T08:34:32.570 回答