删掉对应配置文件即可彻底取消日志轮转,Logrotate只加载存在的文件,不存在即忽略;注释无效且可能引发解析错误;删除后需手动清理旧归档并确认应用自身日志机制是否仍在运行。

直接删掉对应配置文件即可
Logrotate 不会读取被删除的文件,删了 /etc/logrotate.d/xxx 就等于彻底取消该服务的日志轮转规则——没有“禁用开关”,只有“存在即生效,不存在即忽略”。
常见错误是去注释 /etc/logrotate.conf 里的全局规则,或在子配置里加 # 注释整段:这没用。Logrotate 仍会加载该文件并尝试解析,一旦语法出错(比如注释破坏了块结构),可能导致整个轮转失败,连其他服务都受影响。
- 确认目标配置路径:
ls /etc/logrotate.d/ | grep -i nginx(替换成你要查的服务名) - 删前备份(可选但推荐):
sudo cp /etc/logrotate.d/nginx /etc/logrotate.d/nginx.bak - 执行删除:
sudo rm /etc/logrotate.d/nginx - 验证是否已移除:
logrotate -d /etc/logrotate.conf 2>&1 | grep -A2 -B2 nginx,输出里不应再出现该路径的轮转计划
删完要手动清理残留日志归档
删除配置文件只阻止后续轮转,不会自动删掉之前已生成的 .1、.2.gz 等旧文件。这些文件会一直留在磁盘上,直到被其他策略或人工清理。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 先定位日志目录:
grep -r "^\s*/var/log" /etc/logrotate.d/nginx 2>/dev/null(若刚删了,就查备份文件或服务文档) - 查看当前归档:
ls -lt /var/log/nginx/*.1* - 安全清理(建议先
ls确认):sudo find /var/log/nginx -name "*.1*" -o -name "*.2*" -delete - 注意:别误删正在写的
access.log或error.log,它们没有数字后缀
如果服务还在写日志,得关掉它的自动归档行为
有些应用(如 rsyslog、journalctl)自带日志管理,和 logrotate 并存。删了 logrotate 规则后,若日志仍在膨胀,说明是应用自身机制在起作用。
- 查 rsyslog 是否启用内置轮转:
grep -r "imfile\|\$ActionFileDefaultTemplate" /etc/rsyslog.conf /etc/rsyslog.d/ - 查 journald 限制:
systemctl show --property=SystemMaxUse,MaxRetentionSec systemd-journald - 停用 journald 归档(谨慎):
sudo systemctl edit systemd-journald,加[Journal] SystemMaxUse=100M,再sudo systemctl restart systemd-journald
验证是否真生效,别信“删了就完事”
Logrotate 每天通过 /etc/cron.daily/logrotate 执行,删配置后首次生效要等到下次 cron 运行(通常凌晨)。但你可以强制触发一次来验证:
- 运行:
sudo logrotate -f /etc/logrotate.conf - 检查输出末尾是否还有该服务的日志路径参与轮转
- 再看日志目录:
ls /var/log/nginx/—— 如果不再出现新生成的access.log.1,说明已真正退出轮转流程 - 最容易被忽略的是:某些服务(如 Docker 的 json-file 日志驱动)根本不走 logrotate,而是靠
max-size和max-file配置控制,这类必须去改 daemon.json

















