麒麟系统日志清理需三步:一是用logrotate配置weekly、rotate 4、compress等参数实现文本日志自动轮转;二是限制journald日志大小为300M并重启服务;三是通过cron每日执行脚本清空、截断及删除过期日志。

麒麟系统中旧的系统日志持续堆积,/var/log目录动辄占用数GB甚至数十GB空间,导致磁盘告警、系统变慢或升级失败,必须通过自动机制定期清理而非手动干预。
用logrotate配置全局日志自动轮转与删除
这是最稳妥、最符合麒麟OS默认设计的日志管理方式,适用于syslog、kern.log、auth.log等文本日志,能按周期切割+压缩+保留指定数量归档。
第一步:打开全局配置文件:sudo nano /etc/logrotate.conf
第二步:确认或补充以下六行关键参数(缺失则手动添加,每行独立成行):
weekly
rotate 4
compress
delaycompress
missingok
notifempty
第三步:保存退出(Ctrl+O → 回车 → Ctrl+X),该配置表示每周轮转一次,最多保留4个归档,压缩但延迟压缩(避免正在写入时出错),跳过空文件和不存在的路径。
第四步:立即触发一次轮转验证效果:sudo logrotate -f /etc/logrotate.conf
执行后检查/var/log目录下是否生成syslog.1、kern.log.1等文件,原日志是否被清空——若无变化,说明服务未启用或路径不匹配。
限制systemd-journald二进制日志自动截断
journald日志以二进制格式存于/var/log/journal/,极易单月膨胀至数GB,且logrotate无法处理,必须单独设限。
方法一:直接运行命令限制总大小为300MB(推荐)
sudo journalctl --vacuum-size=300M
方法二:修改配置文件实现永久生效
执行 sudo nano /etc/systemd/journald.conf,取消注释并修改两行:
SystemMaxUse=300M
MaxRetentionSec=4week
保存后重启服务:sudo systemctl restart systemd-journald
注意:修改journald.conf后必须重启服务,否则新参数不生效;【MaxRetentionSec设置过大可能抵消SystemMaxUse限制】
用cron定时执行自定义日志清理脚本
当需要混合清理journald、truncate大文本日志、删除过期.gz归档时,脚本方式最灵活可控。
创建脚本:sudo nano /usr/local/bin/clean-logs.sh
填入以下内容(复制粘贴即可):
#!/bin/bash
journalctl --vacuum-size=300M
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
sudo rm -f /var/log/*.gz
sudo find /var/log -name "*.?[4-9]" -o -name "*.??[4-9]" | xargs -r rm -f
赋予执行权限:sudo chmod +x /usr/local/bin/clean-logs.sh
添加每日凌晨2点执行的定时任务:
(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/clean-logs.sh") | sudo crontab -

















