Ubuntu
新貴日誌不旋轉
我有一個管理 Node API 服務的自定義 upstart 腳本。該腳本將輸出管道傳輸到
/var/log/upstart/api-access.log
. 我一直看到的是舊日誌被歸檔到,但沒有創建api-access.log.1.gz
新文件。api-access.log
知道為什麼會發生這種情況,或者我能做些什麼來使它正確嗎?
我的新貴文件的腳本部分如下所示:
script chdir /opt/www/api exec sudo -u www-data NODE_ENV=production npm start >> /var/log/upstart/api-access.log end script
當 /var/log/upstart/api-access.log 被歸檔時,指向它的原始文件系統連結被刪除,但是 inode 仍然被 exec 程序持有。即使沒有對它的引用,該程序也會繼續寫入該 inode,並將繼續這樣做,直到該程序重新啟動。
除非有特殊原因您將該輸出重定向到該文件,否則您應該避免這樣做。無論如何,Upstart 將所有輸出寫入 /var/log/upstart 中以 upstart 腳本命名的文件。它還會在每次寫入時重新打開文件,因此如果文件已被日誌輪換刪除,則會重新創建文件。
由 JennyD 編輯: 如果您確實想寫入文件,請將日誌輪換腳本設置為複制和截斷,而不是移動文件。這樣,原始文件句柄將保持可用,但內容將被移動到存檔文件。