Linux 清理旧日志释放磁盘空间

4次阅读

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

Linux 清理旧日志释放磁盘空间

Linux 系统运行久了,日志文件(尤其是 /var/log 下的 journalsyslogauth.logmessages 等)容易越积越多,占满磁盘空间。清理旧日志是释放空间最直接有效的方式,但要注意保留必要记录、避免误删系统关键文件。

查看哪些日志占用了大量空间

先定位“大户”,再动手清理,避免盲目操作:

  • 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.logubuntu/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=500M
    SystemMaxFileSize=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 快速浏览时间排序结果
text=ZqhQzanResources