logrotate未启用或配置错误会导致日志持续增长;需确认安装、启用cron定时任务、配置自定义规则、手动验证轮转效果,并调整主配置以控制磁盘占用。

如果您在Linux系统中发现日志文件持续增长,占用大量磁盘空间,且未自动归档或删除旧日志,则可能是logrotate服务未启用或配置不正确。以下是启用日志轮转并配置自动清理的具体步骤:
一、确认logrotate是否已安装并验证基础功能
logrotate是大多数Linux发行版默认预装的工具,但需确认其存在且可执行,同时检查系统是否已部署默认配置。该步骤用于排除因软件缺失导致的轮转失效。
1、执行命令 rpm -q logrotate(CentOS/RHEL)或 dpkg -l | grep logrotate(Debian/Ubuntu)确认安装状态。
2、运行 logrotate --version 输出版本号,验证二进制文件可用。
3、查看默认配置路径是否存在:ls -l /etc/logrotate.conf 和 ls -l /etc/logrotate.d/。
二、启用logrotate定时任务
logrotate本身不驻留运行,依赖cron调度器定期触发。若系统未配置对应crontab条目,轮转将不会自动发生。需确保每日定时任务已激活。
1、检查系统级cron是否存在logrotate调用:cat /etc/cron.daily/logrotate,内容应包含 /usr/sbin/logrotate /etc/logrotate.conf。
2、若文件不存在,手动创建:echo "/usr/sbin/logrotate /etc/logrotate.conf" > /etc/cron.daily/logrotate。
3、赋予可执行权限:chmod +x /etc/cron.daily/logrotate。
三、编写自定义日志轮转配置文件
针对特定应用日志(如/var/log/myapp.log),需在/etc/logrotate.d/下新建独立配置文件,避免直接修改主配置,提升可维护性与隔离性。
1、使用文本编辑器创建新配置:sudo nano /etc/logrotate.d/myapp。
2、写入以下内容(按需替换路径和参数):
/var/log/myapp.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0644 root root
}
3、保存退出后,执行 logrotate -d /etc/logrotate.d/myapp 进行调试模式校验,确认语法无误。
四、强制执行一次轮转并验证结果
为即时验证配置效果,可跳过等待cron周期,手动触发单次轮转操作,并检查生成的归档文件及原日志状态。
1、运行强制轮转命令:sudo logrotate -f /etc/logrotate.conf。
2、检查目标日志目录:ls -lt /var/log/myapp*,确认出现类似 myapp.log.1 或 myapp.log.1.gz 的归档文件。
3、确认原日志已被清空或重置:tail -n 1 /var/log/myapp.log 应返回空或仅含最新写入内容。
五、调整系统级logrotate主配置以适配磁盘压力
当全局日志总量过大时,需修改/etc/logrotate.conf中的默认保留策略,防止/var/log填满根分区。此操作影响所有由主配置管理的日志。
1、备份原始配置:sudo cp /etc/logrotate.conf /etc/logrotate.conf.bak。
2、编辑主配置:sudo nano /etc/logrotate.conf。
3、定位并修改以下两行:
# rotate 4
# weekly
改为:
rotate 3
daily。
4、在文件末尾添加全局压缩选项:compress 和 delaycompress(若尚未启用)。









