Log rotation生成文件超出rotate设定,如何限制pcsd日志数量至5?
问题描述
现有/etc/logrotate.d/pcsd配置如下:
#cat /etc/logrotate.d/pcsd /var/log/pcsd/*.log { rotate 5 weekly missingok notifempty compress delaycompress copytruncate create 0600 root root }
按配置应最多保留5个pcsd.log相关备份文件,但实际生成了大量备份(超过100个),部分文件列表如下:
-rw-------. 1 root root 230M Apr 9 00:01 pcsd.log-20230409-2023040900.backup -rw-------. 1 root root 15M Apr 16 00:01 pcsd.log-20230409.gz-2023041600.backup -rw-------. 1 root root 16M Apr 16 00:01 pcsd.log-20230416.gz -rw-------. 1 root root 247M Apr 16 00:01 pcsd.log-20230416-2023041600.backup -rw-------. 1 root root 17M Apr 23 00:01 pcsd.log-20230423.gz -rw-------. 1 root root 16M Apr 23 00:01 pcsd.log-20230416.gz-2023042300.backup -rw-------. 1 root root 254M Apr 23 00:01 pcsd.log-20230423-2023042300.backup -rw-------. 1 root root 17M Apr 30 00:01 pcsd.log-20230423.gz-2023043000.backup -rw-------. 1 root root 17M Apr 30 00:01 pcsd.log-20230430.gz -rw-------. 1 root root 252M Apr 30 00:01 pcsd.log-20230430-2023043000.backup -rw-------. 1 root root 17M May 7 00:01 pcsd.log-20230430.gz-2023050700.backup -rw-------. 1 root root 17M May 7 00:01 pcsd.log-20230507.gz -rw-------. 1 root root 252M May 7 00:01 pcsd.log-20230507-2023050700.backup -rw-------. 1 root root 17M May 14 00:01 pcsd.log-20230507.gz-2023051400.backup -rw-------. 1 root root 251M May 14 00:01 pcsd.log-20230514-2023051400.backup -rw-------. 1 root root 251M May 14 00:01 pcsd.log-20230514
/etc/logrotate.conf全局配置如下,且dateext已生效:
weekly rotate 4 create dateext include /etc/logrotate.d
请问如何将pcsd日志文件的最大保留数量限制为5?
解决方案
1. 排查重复备份原因
从文件列表看,存在两类额外的.backup文件,这大概率是pcsd自身的日志备份机制与logrotate冲突导致的。先检查pcsd配置(如/etc/sysconfig/pcsd或pcsd服务配置文件),若存在自带的日志轮转/备份选项,直接关闭该功能,避免重复生成备份。
2. 调整logrotate配置
修改/etc/logrotate.d/pcsd,添加日期格式定义和保留时长限制,确保只保留5份每周备份:
/var/log/pcsd/*.log { rotate 5 weekly missingok notifempty compress delaycompress copytruncate create 0600 root root dateext # 明确启用日期后缀(继承全局配置,显式声明更清晰) dateformat -%Y%m%d # 指定归档文件的日期格式,避免命名混乱 maxage 35 # 删除超过35天的文件(5周×7天=35天,对应5份每周备份) }
3. 清理现有多余文件
手动删除已存在的超期备份文件:
cd /var/log/pcsd # 删除超过35天的.backup文件 find . -name "*.backup" -mtime +35 -delete # 删除超过35天的压缩归档文件 find . -name "*.log-*.gz" -mtime +35 -delete
4. 验证配置正确性
执行测试命令检查logrotate配置是否正常:
logrotate -v /etc/logrotate.d/pcsd
内容的提问来源于stack exchange,提问作者Nettimi
相关产品推荐
相关产品推荐

