损坏的原因/ var / lib / logrotate / status

时间:2012-02-02 05:53:30

标签: linux unix redhat

我使用logrotate 3.7.1来旋转我的日志。最近我发现logrotate失败了,原因是/ var / lib / logrotate / status文件被破坏了。我已经清除了日志文件并运行了logrotate,它工作正常。

我想知道文件被破坏的原因是什么。

提前致谢。

4 个答案:

答案 0 :(得分:1)

一般来说,Unix变种操作系统上的文件损坏可能由于几个原因而发生。 磁盘上的材料缺陷经常在syslog中留下指示。 kill -9当前正在为大于OS本机块大小的文件重写文件的进程。 暴力和意外断电可能导致某些硬件安排突然关机。 磁盘事件没有空间,实用程序不能很好地容忍。 运行实用程序的第二个或更多副本,其中未包含或认为有关文件需要正确的锁定机制。 我建议在启动时使用“/ usr / sbin / logrotate -dv /etc/logrotate.conf”来检测,修复和记录此类事件的全天候设置。

答案 1 :(得分:0)

(你没有提供最重要的信息,即“失败”和“腐败”究竟是什么意思。没有这些信息,我只能在黑暗中拍摄......)

logrotate应该能够旋转任何文件,无论其内容如何 - 据我所知,它只是重命名和压缩文件。内容损坏的文件将被处理为与任何其他文件相同。

考虑到这一点,我只能认为logrotate失败的原因是导致日志文件损坏的原因。我首先仔细看看你的存储硬件 - 例如磁盘故障可能会损坏日志文件,然后在读取时导致I / O错误,从而在其轨道中停止logrotate

答案 2 :(得分:0)

在解析损坏的状态文件时,您必须从logrotate发布特定的错误消息,因为它指示文件中损坏它的行号。

在我的例子中,例如,正在处理的文件名模式中的UTF-8字节序列无效;根本原因不在logrotate中,而是在创建这些日志的程序中。

答案 3 :(得分:0)

如果不知何故有多个并发运行的logrotate,状态文件很容易损坏,当有多种用途的logrotate且其中一些直接用cron作业配置时(而不是向/ etc / logrotate添加配置条目),情况确实如此。 d)或logrotate手动运行。