Logrotate
logrotate 如何與硬連結文件互動?
我有一項服務堅持將其日誌文件保存在可怕的位置。在所有改變保存位置的努力都失敗之後,我的下一個想法是在更乾淨的地方創建指向這些文件的硬連結。這讓我產生了一個擔憂:
如果我配置 logrotate 來管理這些日誌文件,它會按預期工作(旋轉日誌,保持我的連結正常工作)嗎?還是 logrotate 會意外斷開連結,並將日誌累積在其本地位置,而不是在我的中心位置?
我相信我可以配置 logrotate 以在必要時在輪換後重新創建硬連結。但是,有必要嗎?
要回答您的問題,這取決於您進行哪種輪換。例如,將發生以下進展:
複製和截斷方法:
- Logrotate 將日誌文件複製到新的日誌文件中。
- 新的日誌文件只顯示在舊位置。
- Logrotate 截斷舊文件。
- 這會將舊文件在兩個位置都變為零字節。
- 日誌文件繼續從應用程序中填充。
這會將日誌文件備份留在舊位置。
對此的修復相當簡單:配置 logrotate 以在新位置輪換日誌。舊的文件仍然會不斷增長,但它只是那個文件。
複製和創建方法:
- Logrotate 將文件複製到新的日誌文件。
- 此日誌文件沒有硬連結,僅顯示在新位置。
- Logrotate 刪除舊的日誌文件。
- 由於硬連結,這只是刪除了 logrotate 執行目錄中的硬連結。另一個目錄仍然有該文件的完整副本。
- Logrotate 創建一個新的日誌文件。
- 這不會硬連結到其他位置。
這種方法是最有問題的,你需要一些旋轉後魔法來清理它。