gpt4 book ai didi

linux - io方向操作会锁定文件吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:18 25 4
gpt4 key购买 nike

我已经有一个不断增长的 nginx 日志文件,大约20G,我希望轮换它。

1, i mv 旧日志文件到新日志文件

2,我执行 > old_log_file.log 在大约 2~3 秒内截断旧日志文件

当我进行截断时(大约2~3秒),旧日志文件上是否有锁(写锁?)?

在这2~3s期间,nginx返回502等待将日志追加到旧日志文件直到锁释放?

谢谢您的解释。

最佳答案

在 Linux 上,(几乎)没有强制 file locks (更准确地说,内核中曾经有一些mandatory locking feature,但它已被弃用,您确实应该避免使用它)。文件锁定发生在flock(2)lockf(3)并且是建议并且应该显式(例如使用flock(1)命令,或某些程序调用flocklockf)。

因此,与文件相关的每个锁定实际上都是使用该文件的所有软件之间的约定(并且 mv(1) 或 shell 的重定向不使用文件锁定)。

请记住,Linux 上的文件主要是 i-node (参见 inode(7) ),它可以有零个、一个或多个文件路径(参见 path_resolution(7) 并注意 link(2)rename(2)unlink(2) )并通过一些 file descriptor 使用。阅读 ALP (也许 Operating Systems: Three Easy Pieces )了解更多。

在您的问题场景中不会发生文件锁定(并且涉及的 inode 和文件描述符是独立的)。

考虑使用logrotate(8) .

某些软件提供了重新加载配置和重新打开日志文件的方法。您应该阅读 nginx 的文档.

关于linux - io方向操作会锁定文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54033940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com