【发布时间】:2019-01-04 06:21:20
【问题描述】:
我已经有一个不断增长的 nginx 日志文件,大约 20G,我希望轮换它。
1、imv旧的日志文件到新的日志文件
2,我用> old_log_file.log在大约2~3秒内截断旧的日志文件
当我进行截断(大约 2~3 秒)时,如果旧日志文件上有锁(写锁?)?
在那个 2~3s 的时间里,nginx 会返回 502 等待将日志追加到旧的日志文件,直到锁被释放?
谢谢你的解释。
【问题讨论】:
-
mv old_log_file.log new_log_file.log && touch old_log_file.log -
我认为您的命令不会起作用,因为
mv不会更改旧日志文件的inode。由于inode,nginx仍将登录到“new_log_file”。然后你创建了一个名为 olg 日志文件的新日志文件,但是inode改变了,nginx 直到nginx -s reload配置文件才会写入它。 -
如果
nginx是这样关联日志的,那么您可能是正确的。那为什么不cp -a old_log_file.log new_log_file.log && :> old_log_file.log呢? -
我尝试了2种截断方法:
>和'logrotate',它们都导致nginx输出502 - 很短的时间,然后是200。和logrotate的处理过程和你一样在cp之后说截断。现在我不知道如何调试这个错误...... -
这不是一个错误,它是一个特性。
标签: linux redirect io truncate