统信uos系统需通过systemd user timer每日自动轮转并真空清理journal日志,同时单独清理/var/log/*.gz压缩日志,并修改journald.conf永久限制日志大小为50m、保留7天。

统信UOS系统运行数周后,/var/log/journal/目录下systemd日志持续膨胀,单个归档文件常达百MB以上,而/var/log/中残留的*.gz压缩日志又不被journalctl管理,导致根分区空间悄然告急却难以定位源头。
配置systemd timer每日自动轮转并真空清理journal日志
该方案利用系统原生timer机制,在每天固定时间静默执行--rotate→--vacuum-size组合操作,确保活动日志被标记为可删、归档日志按大小裁剪,全程无需图形界面参与,适合生产环境长期值守。
第一步:创建timer和服务单位文件目录
执行:mkdir -p ~/.config/systemd/user
第二步:编写服务定义文件
执行:nano ~/.config/systemd/user/journal-clean.service
在编辑器中粘贴以下内容并保存:
[Unit]
Description=Daily vacuum journal logs
[Service]
Type=oneshot
ExecStart=/usr/bin/sudo /usr/bin/journalctl --rotate
ExecStart=/usr/bin/sudo /usr/bin/journalctl --vacuum-size=50M
User=%i
Environment=PATH=/usr/local/bin:/usr/bin:/bin
第三步:编写定时器配置
执行:nano ~/.config/systemd/user/journal-clean.timer
粘贴以下内容(设定每天凌晨2:30触发):
[Unit]
Description=Run journal vacuum daily
[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
[Install]
WantedBy=default.target
第四步:启用并启动定时器
依次执行:systemctl --user daemon-reload→systemctl --user enable journal-clean.timer→systemctl --user start journal-clean.timer
【必须用--user参数,否则定时器无法在用户会话中运行】
第五步:验证定时器状态
执行:systemctl --user list-timers --all
检查输出中是否包含journal-clean.timer且下一触发时间正确。若显示“next”为“n/a”,说明未激活或路径错误。
补充清理压缩日志的独立定时任务
/var/log/*.gz文件由logrotate生成,完全游离于journalctl生命周期之外,必须单独处理;该任务与journal timer解耦,避免因journal服务异常导致压缩日志堆积。
方法一:复用同一timer,在service文件中追加命令
编辑~/.config/systemd/user/journal-clean.service,在ExecStart=行末尾添加:ExecStart=/usr/bin/sudo /usr/bin/rm -f /var/log/*.gz
方法二:新建专用timer(推荐,职责分离)
执行:nano ~/.config/systemd/user/compress-log-clean.service
填入:
[Unit]
Description=Remove rotated .gz logs
[Service]
Type=oneshot
ExecStart=/usr/bin/sudo /usr/bin/rm -f /var/log/*.gz
User=%i
执行:nano ~/.config/systemd/user/compress-log-clean.timer
填入:
[Unit]
Description=Clean .gz logs weekly
[Timer]
OnCalendar=Sat *-*-* 01:00:00
Persistent=true
[Install]
WantedBy=default.target
启用新timer:systemctl --user daemon-reload→systemctl --user enable compress-log-clean.timer→systemctl --user start compress-log-clean.timer
永久生效的日志大小限制配置
仅靠定时清理是被动补救,必须修改journald.conf让限制策略随系统启动自动加载,否则每次重装或重置配置都会失效。
执行:sudo cp /etc/systemd/journald.conf /etc/systemd/journald.conf.bak
备份完成后再执行:sudo nano /etc/systemd/journald.conf
找到#SystemMaxUse=和#MaxRetentionSec=两行,删除开头的#号,并将值改为:
SystemMaxUse=50M
MaxRetentionSec=7day
【改完必须重启服务,否则配置不生效】
执行:sudo systemctl restart systemd-journald
重启后立即生效,无需等待下次启动。











