为了账号安全,请及时绑定邮箱和手机立即绑定

Nginx写日志文件是什么原理

Nginx写日志文件是什么原理

慕码人8056858 2018-07-22 16:16:35
在做Nginx的日志文件切割,发现一个诡异的问题。当我手工把Nginx的日志文件转移位置以后,如果不reload配置文件,Nginx还是继续写这个被转移到其他目录的日志文件。难道Nginx写日志的时候不是通过文件路径吗?为什么日志文件被转移走了还是能写到?
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

nginx为了更快的速度,一般都缓存了文件的inode的。

查看完整回答
反对 回复 2018-07-26
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我觉得原因是,nginx打开的log文件之后,在系统中实际上是以inode来标识的,移动文件并不会修改inode的编号,所以还会继续写入该文件。

查看完整回答
反对 回复 2018-07-26
?
12345678_0001

TA贡献1802条经验 获得超5个赞

这是文件系统的特性,有点类似编程语言管理变量生命周期的里的引用计数。移动一个文件,甚至删除一个文件,只要这个文件还被某个进程打开着,这个文件就还能被访问到。但如果所有的“引用”都没有了,例如文件名,硬链接(hard link)及文件句柄(不再被程序打开着),才影响对文件的下一次引用,就表现为“找不到文件了”。

查看完整回答
反对 回复 2018-07-26
  • 3 回答
  • 0 关注
  • 1480 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信