Ubuntu

logrotate 中帶有 copytruncate 選項的無盡文件

  • November 29, 2016

當我在此配置中使用 logrotate 時:

/home/ubuntu/.pm2/logs/* {
       rotate 2
       size 200k
       missingok
       notifempty
       compress
       delaycompress
       copytruncate
       create 0640 ubuntu ubuntu
}

我的文件(我們稱之為test)在達到 200k 之前不會旋轉。當它達到 200k 時,它會被複製截斷。我剩下test0k(正確!)和test.1> 200k。

問題是第二天我會得到test> 0k(正確增長),test.1在0k和test.1.1> 200k。隨著時間的推移,我最終將test.1.1.1.1...在 0k 處獲得無窮無盡的數量,而昨天創建的最後一個在 > 200k 處。

我最初的想法是有兩個文件,test大小小於 200k 的文件和另一個更舊的日誌文件。

我需要使用 copytruncate,就好像我沒有 PM2 程序將繼續寫入舊日誌文件一樣。

我究竟做錯了什麼?

對於任何偶然發現類似問題的人。

問題出在這一行:

/home/ubuntu/.pm2/logs/* {

特別是,catch-all 應該與.log交換,否則,旋轉的文件(副檔名為 .1 等)也應在下一個輪換週期中輪換。

這解決了這個問題:

/home/ubuntu/.pm2/logs/*.log {

引用自:https://serverfault.com/questions/816025