84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
Nginx 로그 파일을 자르던 중 이상한 문제를 발견했습니다. Nginx 로그 파일을 수동으로 이동할 때 구성 파일을 다시 로드하지 않으면 Nginx는 다른 디렉터리로 이동된 로그 파일을 계속해서 작성합니다.Nginx는 로그를 작성할 때 파일 경로를 사용하지 않나요?이동한 후에도 로그 파일이 계속 기록될 수 있는 이유는 무엇입니까?
欢迎选择我的课程,让我们一起见证您的进步~~
这是文件系统的特性,有点类似编程语言管理变量生命周期的里的引用计数。移动一个文件,甚至删除一个文件,只要这个文件还被某个进程打开着,这个文件就还能被访问到。但如果所有的“引用”都没有了,例如文件名,硬链接(hard link)及文件句柄(不再被程序打开着),才影响对文件的下一次引用,就表现为“找不到文件了”。
我觉得原因是,nginx打开的log文件之后,在系统中实际上是以inode来标识的,移动文件并不会修改inode的编号,所以还会继续写入该文件。
nginx为了更快的速度,一般都缓存了文件的inode的。
这是文件系统的特性,有点类似编程语言管理变量生命周期的里的引用计数。移动一个文件,甚至删除一个文件,只要这个文件还被某个进程打开着,这个文件就还能被访问到。但如果所有的“引用”都没有了,例如文件名,硬链接(hard link)及文件句柄(不再被程序打开着),才影响对文件的下一次引用,就表现为“找不到文件了”。
我觉得原因是,nginx打开的log文件之后,在系统中实际上是以inode来标识的,移动文件并不会修改inode的编号,所以还会继续写入该文件。
nginx为了更快的速度,一般都缓存了文件的inode的。