统信UOS日志自动清理需配置logrotate轮转文本日志、systemd-journald限制journal体积、cron定时vacuum清理及为第三方应用创建专用logrotate配置。

如果您发现统信UOS系统中/var/log目录下的日志文件持续增长,导致磁盘空间被大量占用,则可能是由于日志未配置自动轮转与清理策略。以下是设置自动清理日志的具体操作步骤:
一、配置logrotate实现系统日志自动轮转与清理
logrotate是统信UOS默认集成的日志轮转工具,通过编辑其配置文件可设定日志文件的保留数量、大小上限、压缩方式及删除条件,从而避免日志无限制膨胀。该方法适用于rsyslog、auth.log、syslog等传统文本日志。
1、使用终端打开logrotate主配置文件:sudo nano /etc/logrotate.conf。
2、在文件末尾添加全局策略(或修改现有段落),例如:/var/log/*.log { daily rotate 7 compress missingok notifempty }。
3、为特定服务单独配置(如nginx或自定义应用),创建新配置文件:sudo nano /etc/logrotate.d/myapp,并写入对应路径与规则。
4、保存退出后,手动执行一次轮转测试:sudo logrotate -d /etc/logrotate.conf(-d参数启用调试模式,不实际执行)。
5、确认无误后,运行:sudo logrotate -f /etc/logrotate.conf强制触发一次轮转,验证配置是否生效。
二、配置systemd-journald自动限制journal日志体积
systemd-journald默认将日志持久化存储于/var/log/journal/,若未设限,可能数月积累达GB级。通过修改journald配置,可实现按大小或时间自动截断归档日志,无需人工干预。
1、编辑journald配置文件:sudo nano /etc/systemd/journald.conf。
2、取消注释并修改以下行:SystemMaxUse=50M(限制总占用不超过50MB)。
3、同时可设置:MaxFileSec=1month(单个日志文件最长保存1个月)。
4、保存后重启日志服务使配置生效:sudo systemctl restart systemd-journald。
5、立即应用当前限制策略:sudo journalctl --vacuum-size=50M,强制清理超出部分。
三、部署定时任务定期执行日志真空清理
对于需更灵活控制清理节奏的场景,可通过cron定时调用journalctl命令执行vacuum操作,确保日志空间始终处于预设阈值内,尤其适用于高日志产出环境。
1、编辑root用户的crontab:sudo crontab -e。
2、添加每日凌晨2点执行日志瘦身任务:0 2 * * * /usr/bin/journalctl --vacuum-size=50M >/dev/null 2>&1。
3、若需同时清理压缩旧日志,追加一行:0 2 * * * /usr/bin/rm -f /var/log/*.gz。
4、保存退出,系统将自动加载新定时任务,无需重启服务。
四、创建专用logrotate配置管理第三方应用日志
用户自行部署的服务(如Python Flask应用、Node.js服务)通常将日志输出至自定义路径(如/opt/myapp/logs/),logrotate默认不覆盖此类路径,需为其建立独立配置以纳入统一管理。
1、新建配置文件:sudo nano /etc/logrotate.d/myapp-logs。
2、填入完整路径与策略,例如:/opt/myapp/logs/*.log { weekly rotate 4 compress dateext missingok create 644 myapp myapp }。
3、确保日志文件属主与配置中指定一致(此处为myapp用户),否则create指令将失败。
4、手动运行测试:sudo logrotate -v /etc/logrotate.d/myapp-logs,观察输出是否识别目标文件并准备轮转。

















