银河麒麟终端清理/var/log日志须避免直接删除正在写入的文件,应采用原地清空、轮转或截断方式;journalctl用于清理二进制journald日志,logrotate处理文本日志,truncate可安全清空大日志,归档日志需按规则批量删除。

银河麒麟终端清理/var/log日志文件需避免直接删除正在被服务写入的文件,否则会导致syslog、rsyslogd等进程写入失败甚至崩溃;必须采用原地清空、轮转或截断方式释放空间,同时保留文件节点与权限结构。
用journalctl清理二进制journald日志
systemd-journald日志默认存于/var/log/journal/,以二进制格式存储,logrotate无法处理,且单月可暴涨至数GB。该目录膨胀是/var/log总空间告警的首要原因。
查看当前占用:journalctl --disk-usage
立即释放空间至100MB以内:journalctl --vacuum-size=100M
只保留最近10天日志(适合调试频繁的测试环境):journalctl --vacuum-time=10d
【注意:--vacuum-time和--vacuum-size不可同时生效,后执行的命令会覆盖前者的策略】
用logrotate强制触发文本日志轮转
适用于/var/log/syslog、kern.log、auth.log等传统文本日志,logrotate能自动切割+压缩+归档+清空原文件,是麒麟OS默认推荐的长期管理方式。
第一步:执行全局强制轮转,跳过时间判断立即生效:sudo logrotate -f /etc/logrotate.conf
第二步:检查效果——原syslog文件应变为空,同时生成syslog.1(可能带.gz后缀);若无变化,说明对应日志未在logrotate配置中注册,需手动编辑/etc/logrotate.d/rsyslog补充路径。
第三步:若只想预览轮转逻辑是否匹配,不实际删改文件:sudo logrotate -d /etc/logrotate.conf
直接清空指定大体积文本日志
当syslog或kern.log已超5GB且需秒级释放空间时,truncate比重定向更安全——它明确表达“截为零字节”,对只读文件会报错提示,避免静默失败。
清空系统日志:sudo truncate -s 0 /var/log/syslog
清空内核日志:sudo truncate -s 0 /var/log/kern.log
这一步操作起来很简单,直接把命令敲完回车就行。但【不可逆,且不经过回收站】——清空前务必确认该日志近期无关键排障需求。
批量删除过期归档日志
logrotate轮转后会留下syslog.1、syslog.2.gz、kern.log.3等编号归档,长期积累同样占空间。手动删需按序号范围精准清除,防止误删最新备份。
方法一:删除所有编号≥4的归档(保留最近3个):sudo find /var/log -regex ".*/\(syslog\|kern\.log\|auth\.log\)\.\([4-9]\|[1-9][0-9]\+\)" -delete
方法二:只删压缩过的旧归档(.gz结尾且编号≥3):sudo rm -f /var/log/*.gz.[3-9] /var/log/*.[3-9].gz
方法三:用通配符快速清掉全部带数字后缀的归档(不含当前主日志):sudo rm -f /var/log/*.?[0-9] /var/log/*.??[0-9]

















