logrotate未正确配置或启用会导致日志持续增长;需验证安装与cron调度、修改全局配置、为特定日志创建独立规则、强制执行并验证结果,同时检查journald冲突。

如果您在Linux系统中发现日志文件持续增长、占用大量磁盘空间,而未自动归档或清理,则可能是logrotate服务未正确配置或未启用。以下是完成logrotate基础配置与生效验证的具体步骤:
一、确认logrotate是否已安装并运行
logrotate通常预装于主流Linux发行版,但需验证其存在性及cron调度状态。该步骤确保后续配置具备执行基础。
1、执行logrotate --version命令,检查是否返回版本信息;若提示命令未找到,则需使用对应包管理器安装,如Ubuntu/Debian执行sudo apt install logrotate,CentOS/RHEL执行sudo yum install logrotate或sudo dnf install logrotate。
2、运行sudo systemctl list-timers | grep logrotate,确认系统级定时任务中存在logrotate条目;若无输出,说明daily cron作业可能被禁用或logrotate未被纳入标准调度。
3、手动触发一次轮转测试:执行sudo logrotate -d /etc/logrotate.conf,-d参数仅模拟执行过程,不实际操作文件,适合验证语法正确性。
二、编辑主配置文件定义全局策略
/etc/logrotate.conf是logrotate的全局配置入口,其中设定默认行为(如保留份数、压缩方式),可避免在每个日志规则中重复声明。
1、使用sudo nano /etc/logrotate.conf打开配置文件。
2、定位到# rotate log files weekly附近,取消注释或修改weekly为daily,以启用每日轮转。
3、查找rotate 4行,将其改为rotate 7,表示最多保留7个历史归档文件。
4、确保compress未被注释,启用gzip压缩;若需禁用压缩,改为nocompress。
三、为特定日志创建独立配置片段
将自定义日志路径的轮转规则存入/etc/logrotate.d/目录下独立文件,便于维护且不影响全局配置。logrotate启动时会自动加载该目录所有可读文件。
1、执行sudo nano /etc/logrotate.d/myapp新建配置文件。
2、写入以下内容:
/var/log/myapp/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 644 root root
sharedscripts
postrotate
/bin/systemctl reload myapp.service > /dev/null
endscript
}
3、保存退出后,必须保证该文件权限为644且属主为root,否则logrotate将跳过加载,可执行sudo chmod 644 /etc/logrotate.d/myapp && sudo chown root:root /etc/logrotate.d/myapp修正。
四、强制立即执行一次轮转并验证结果
避免等待cron定时触发,通过手动运行确认配置是否按预期生成归档、重命名及清理动作。
1、执行sudo logrotate -f /etc/logrotate.conf,-f参数强制执行所有包含的配置,无论上次轮转时间。
2、进入目标日志目录,例如cd /var/log/myapp,运行ls -lt查看文件列表变化。
3、确认原始日志(如app.log)已被重命名为app.log.1,且新空文件已创建;若启用compress,app.log.1.gz应存在;若设定了delaycompress,app.log.1保持未压缩,app.log.2.gz才出现。
五、检查systemd-journald与logrotate共存冲突
当系统同时启用journald和传统syslog(如rsyslog)时,journal日志可能与/var/log/messages等文件重复记录,导致logrotate误处理或空间误判。
1、运行sudo journalctl --disk-usage查看journald当前占用空间。
2、编辑/etc/systemd/journald.conf,取消#SystemMaxUse=行注释,设置为SystemMaxUse=500M,限制journal最大体积。
3、重启journald服务:sudo systemctl restart systemd-journald,此操作不会影响logrotate对/var/log/下文件的管理,但能防止journal无限制膨胀挤占磁盘。










