麒麟OS需配置logrotate自动切割日志防止磁盘耗尽,启用logrotate.timer服务,配置/etc/logrotate.conf全局策略及/etc/logrotate.d/system-logs独立规则,并通过-d、-f验证生效。

麒麟OS系统日志持续增长会快速耗尽磁盘空间,必须配置自动切割机制防止/var/log/目录被撑爆,否则可能引发服务异常、审计中断甚至系统无法登录。
启用logrotate定时服务
logrotate本身不主动运行,依赖systemd timer触发,若timer未激活,所有配置形同虚设。
执行命令检查状态:sudo systemctl is-enabled logrotate.timer
若返回disabled,立即启用:sudo systemctl enable --now logrotate.timer
验证是否已调度:sudo systemctl list-timers | grep logrotate,输出中应含“next”时间点且状态为“running”。
修改全局轮转策略
所有未被单独规则覆盖的日志都受此配置约束,是日志管理的基准线。
用管理员权限编辑主配置:sudo nano /etc/logrotate.conf
确认以下参数存在且未被注释(缺失则手动添加):
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 0644 root root
include /etc/logrotate.d
【必须保留include行】 否则/etc/logrotate.d/下自定义规则全部失效。
保存退出:Ctrl+O → 回车 → Ctrl+X。
为关键系统日志创建独立规则
系统核心日志如messages、secure等写入频繁,需单独控制轮转节奏与权限,避免被全局策略误伤。
方法一:直接复用rsyslog已有配置
查看当前规则:sudo cat /etc/logrotate.d/rsyslog
若存在/var/log/messages路径,直接编辑该文件;若不存在,新建:sudo nano /etc/logrotate.d/system-logs
方法二:新建专用配置
填入以下内容(注意路径与属主匹配实际环境):
/var/log/messages /var/log/secure /var/log/audit/audit.log {<br> daily<br> rotate 30<br> size +100M<br> compress<br> missingok<br> notifempty<br> create 640 root root<br> copytruncate<br> sharedscripts<br> postrotate<br> /bin/systemctl kill --signal=SIGHUP rsyslog.service > /dev/null 2>&1 || true<br> endscript<br>}
【copytruncate必须配合create使用】 否则轮转后新日志无法生成,后续写入将失败。
设置配置文件权限:sudo chmod 644 /etc/logrotate.d/system-logs
立即验证配置有效性
步骤一:语法检测
运行sudo logrotate -d /etc/logrotate.d/system-logs,观察输出末尾是否出现“rotating log”及无ERROR字样。
步骤二:强制执行一次
执行sudo logrotate -f /etc/logrotate.d/system-logs。
步骤三:确认效果
检查归档文件:ls -lt /var/log/messages*,应看到messages.1或messages-20260625等新文件生成,原messages大小归零。

















