linux系统日志清理应先用du -sh /var/log/* | sort -hr | head -10定位大文件,重点处理/var/log/journal/(用journalctl --vacuum-size=500m或配置journald.conf)、传统日志(依赖logrotate)及容器、apt缓存等隐藏日志源,避免直接删除关键文件。

Linux 系统运行久了,日志文件(尤其是 /var/log 下的 journal、syslog、auth.log、messages 等)容易越积越多,占满磁盘空间。清理旧日志是释放空间最直接有效的方式,但要注意保留必要记录、避免误删系统关键文件。
查看哪些日志占用了大量空间
先定位“大户”,再动手清理,避免盲目操作:
- 用
du -sh /var/log/* | sort -hr | head -10查看前 10 个最大的日志目录或文件 - 特别关注:
/var/log/journal/(systemd-journald 日志,常占数 GB)、/var/log/syslog、/var/log/kern.log、/var/log/alternatives.log(Ubuntu/Debian 常见)、/var/log/messages(RHEL/CentOS) - 用
df -h /var确认/var分区是否已接近 100% 使用率
安全清理 systemd-journald 日志(最常见瓶颈)
/var/log/journal/ 是多数现代 Linux 发行版(启用 systemd 的系统)日志膨胀主因。它默认不自动轮转,需手动限制:
- 临时清理:运行
sudo journalctl --vacuum-size=500M保留最近 500MB 日志;或sudo journalctl --vacuum-time=2weeks仅保留 2 周内日志 - 永久限制:编辑
/etc/systemd/journald.conf,取消注释并修改以下行:SystemMaxUse=500MSystemMaxFileSize=100M
然后重启服务:sudo systemctl restart systemd-journald - 注意:禁用 journald(不推荐)或清空全部日志(
sudo journalctl --vacuum-size=1)会丢失所有历史日志,排查问题时可能无从下手
轮转和清理传统 syslog 文件
/var/log/*.log 类文件通常由 logrotate 管理,但配置不当或长期未运行会导致单个文件过大:
- 检查 logrotate 是否正常工作:
sudo logrotate -d /etc/logrotate.conf(-d 表示调试模式,不实际执行) - 强制执行一次轮转:
sudo logrotate -f /etc/logrotate.conf,这会按规则压缩、归档、删除旧日志 - 手动清理已归档但不再需要的压缩日志:
sudo find /var/log -name "*.log.*.gz" -mtime +30 -delete(删除 30 天前的压缩日志) - 谨慎删除未压缩的
.log文件——除非确认其内容冗余且已有备份,否则优先走 logrotate 流程
其他易被忽略的日志位置
别只盯着 /var/log,这些地方也可能悄悄吃掉空间:
-
/var/cache/apt/archives/(Debian/Ubuntu):旧安装包缓存,用sudo apt clean清空 -
/var/lib/docker/volumes/或/var/lib/containerd/(有容器环境时):容器日志可能写在匿名卷或 json-file 驱动下,需检查docker logs设置或清理容器日志文件 -
/root/.local/share/JetBrains/或/home/$USER/.cache/(桌面环境):部分应用(如 IDE、浏览器)日志也可能堆积,可按需清理 - 检查是否有残留的
*.old、*.1、*.gz文件,用ls -lt /var/log/ | head快速浏览时间排序结果










