当我使用具有以下配置的 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 进程将继续写入旧日志文件。
我究竟做错了什么?
答案1
对于任何遇到类似问题的人来说。
问题出在这一行:
/home/ubuntu/.pm2/logs/* {
尤其是*应该换成*。日志,否则,已轮换的文件(扩展名为 .1 等)也应在下一个轮换周期中轮换。
这修复了该问题:
/home/ubuntu/.pm2/logs/*.log {