Ubuntu
logrotate 中帶有 copytruncate 選項的無盡文件
當我在此配置中使用 logrotate 時:
/home/ubuntu/.pm2/logs/* { rotate 2 size 200k missingok notifempty compress delaycompress copytruncate create 0640 ubuntu ubuntu }
我的文件(我們稱之為
test
)在達到 200k 之前不會旋轉。當它達到 200k 時,它會被複製截斷。我剩下test
0k(正確!)和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 {