Linux
logrotate 是如何工作的?
當它“旋轉”一個日誌文件時,logrotate 究竟做了什麼?例如,它是否重命名現有文件並使用舊名稱創建一個新文件?
本文介紹了在日誌輪換後重新啟動服務,以便它可以使用新的日誌文件。這僅僅是因為該程序可能會保留舊文件的打開句柄嗎?如果我的程序每次寫入日誌時都會打開一個新的文件句柄,它會在不重新啟動的情況下使用新的日誌文件嗎?
除非
copytruncate
使用 ,否則每次將日誌重命名為新名稱(例如log.0),然後創建空文件。postrotate
用於通知所有者程序需要重新打開日誌。如果程序是啞的並且不能通過信號重新打開它的日誌,那麼
copytruncate
應該使用 - 在這種情況下,日誌文件的內容被複製而不是重命名,然後日誌只是被截斷。如果一個程序為每次寫入重新打開日誌(因此它應該在此之後關閉日誌,否則打開的文件句柄將堆積起來,除非用盡作業系統/使用者限制),那麼您可以省略所有者程序通知。但這種情況很少見,因為當大量資訊不斷寫入日誌時,這種方法會危及日誌寫入器的性能。