删除的日志文件神秘地再次出现

时间:2011-11-08 15:46:05

标签: nginx passenger logfile

我用nginx运行乘客,几个月前我删除了一个耗尽磁盘空间的nginx日志文件,特别是/var/log/nginx/error.log.1,大小约为5GB,然后重新配置logrotate到保持日志文件大小。一切都很好,直到几天之后,被删除的文件以某种方式由乘客流程回收(由lsof + L1揭示)。看来删除的文件大小增加,显然它正在被写入。我不知道为什么它要写入error.log.1,因为那是一个旋转的日志文件(虽然它已经很久了我不确定我是否将error.log重命名为error.log.1删除/移动周围的东西,可能与问题有某种关系)通过touch tmp / restart.txt重新启动乘客没有改变lsof + L1也没有收回磁盘空间但是重新启动了nginx。   现在真正奇怪的是,从那时起系统已重新启动,问题仍然存在。几天或几周过去,然后突然可用的磁盘空间缩小,我检查lsof + L1,然后再次删除了文件。到底是怎么回事?知道这是如何发生并且有助于了解我如何能够阻止它再次出现将会很有趣。感谢。

log rotate conf看起来像这样: /var/log/nginx/*.log {         日常         missingok         旋转52         压缩         delaycompress         notifempty         创建640 root adm         sharedscripts         postrotate                 [! -f /var/run/nginx.pid] ||杀死-USR1 cat /var/run/nginx.pid         endscript }

1 个答案:

答案 0 :(得分:3)

我知道这是一个旧线程,但我的猜测是重新启动的nginx服务释放了已删除日志文件的锁定,因为“突然免费磁盘空间缩小”(如果删除了一个打开句柄的文件)对它来说,它将展示你描述的行为,直到该句柄被释放)。听起来像logrotate函数不会导致nginx释放句柄吗?