这是我的 logrotate 配置
/var/log/abc/*.log {
missingok
compress
sharedscripts
create 640 root root
postrotate
/etc/init.d/abc reload
endscript
}
当我手动运行它logrotate /etc/logrotate.d/abc
时,它不会旋转日志文件,而是xyz.log
删除xyz.log.1.gz
该日志文件。
所以目前我有xyz.log
,xyz.log.2.gz
但是没有xyz.log.1.gz
。
我无法理解 logrotate 的这种行为。
答案1
检查初始化脚本的内容/etc/init.d/abc
。当使用命令调用时reload
,它至少应该通过关闭其相应的文件描述符(此时将指向路径/var/log/abc/xyz.log.1
)来停止写入,并开始重新写入/var/log/abc/xyz.log
。