首頁  >  問答  >  主體

Nginx寫日誌檔是什麼原理

在做Nginx的日誌檔切割,發現一個詭異的問題。當我手動把Nginx的日誌檔案轉移位置以後,如果不reload設定文件,Nginx還是繼續寫這個被轉移到其他目錄的日誌檔案。
難道Nginx寫日誌的時候不是通過檔案路徑嗎?
為什麼日誌檔被轉移走了還是能寫到?

天蓬老师天蓬老师2712 天前732

全部回覆(3)我來回復

  • PHP中文网

    PHP中文网2017-05-16 17:32:10

    這是檔案系統的特性,有點類似程式語言管理變數生命週期的里的引用計數。移動一個文件,甚至刪除一個文件,只要這個文件還被某個行程打開著,這個文件就還能被存取。但如果所有的「引用」都沒有了,例如文件名,硬連結(hard link)及文件句柄(不再被程式打開著),才影響對文件的下一次引用,就表現為「找不到文件了」。

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-16 17:32:10

    我覺得原因是,nginx打開的log檔案之後,在系統中實際上是以inode來標識的,移動檔案並不會修改inode的編號,所以還會繼續寫入該檔案。

    回覆
    0
  • 滿天的星座

    滿天的星座2017-05-16 17:32:10

    nginx為了更快的速度,一般都快取了檔案的inode的。

    回覆
    0
  • 取消回覆