必须启用logrotate定时器并配置全局及专用规则:先执行sudo systemctl enable --now logrotate.timer,再在/etc/logrotate.conf中确保含weekly、rotate 4等六行基础策略,并为/var/log/syslog和kern.log单独创建/etc/logrotate.d/syslog-kern文件,设daily轮转、保留7份、自动创建正确权限文件,最后用-d和-f -v验证生效。

如果您在麒麟OS系统中发现日志文件持续膨胀、/var/log目录占用空间激增,甚至syslog或kern.log单个文件达到几十GB,必须通过定时机制自动轮转与清理,否则手动干预无法应对长期运行下的日志堆积问题。
确认logrotate已安装并启用
logrotate是麒麟OS默认预装的日志管理工具,但部分精简镜像可能未激活其定时服务,不检查就直接改配置会导致策略完全不生效。
打开终端,执行dpkg -l | grep logrotate,确认输出中包含ii logrotate表示已安装。
运行systemctl list-timers | grep logrotate,若无任何输出,说明定时器未启用——此时需立即执行sudo systemctl enable --now logrotate.timer,【否则后续所有配置都不会自动触发】。
编辑全局logrotate配置
全局配置控制所有未单独定义的服务日志行为,修改它能快速统一基础策略,避免逐个服务重复配置。
用管理员权限打开配置文件:sudo nano /etc/logrotate.conf。
确保文件中存在以下六行(缺失则手动添加,位置不限):
weekly
rotate 4
compress
delaycompress
missingok
notifempty
其中weekly表示每周轮转一次,rotate 4代表最多保留4个归档版本,超出即删除;compress启用gzip压缩,delaycompress保证刚轮转的文件不被立即压缩,方便排查问题;missingok防止日志路径不存在时报错中断,notifempty跳过空文件避免误删。
为syslog和kern.log单独建配置
系统核心日志对稳定性影响极大,全局策略可能不够精细,必须单独约束其大小与保留周期,防止突发写入撑爆磁盘。
新建专用配置文件:sudo nano /etc/logrotate.d/syslog-kern。
写入以下内容:
/var/log/syslog /var/log/kern.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 syslog adm
}
注意:这两条日志路径必须写在同一段花括号内,否则logrotate会当作两个独立规则处理,导致重复压缩或权限异常;create 0644 syslog adm确保轮转后新日志文件权限正确,否则rsyslog可能因无写入权限而丢日志。
手动触发并验证效果
配置完成后必须强制运行一次,否则无法确认规则是否语法正确、路径是否可访问、权限是否匹配。
第一步:用调试模式查看logrotate将如何操作:sudo logrotate -d /etc/logrotate.conf,重点检查输出中是否列出/var/log/syslog和/var/log/kern.log,以及是否显示rotating pattern字样。
第二步:执行真实轮转(不压缩,仅切割清空):sudo logrotate -f -v /etc/logrotate.conf。
第三步:立刻检查ls -lh /var/log/syslog*,应看到syslog(当前)、syslog.1(刚轮转出的旧日志)、syslog.1.gz(若compress生效则存在),且原syslog文件大小归零或显著减小。











