Was ist das Prinzip beim Schreiben von Protokolldateien in Nginx?
天蓬老师
天蓬老师 2017-05-16 17:30:10
0
3
772

Beim Schneiden von Nginx-Protokolldateien habe ich ein seltsames Problem entdeckt. Wenn ich die Nginx-Protokolldatei manuell an einen anderen Speicherort verschiebe und die Konfigurationsdatei nicht neu lade, schreibt Nginx weiterhin die Protokolldatei, die in ein anderes Verzeichnis verschoben wurde.
Verwendet Nginx beim Schreiben von Protokollen nicht den Dateipfad?
Warum kann die Protokolldatei nach dem Verschieben weiterhin beschrieben werden?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

Antworte allen(3)
Ty80

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

Ty80

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

滿天的星座

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage