温馨提示×

Ubuntu中清理日志文件的方法是什么

小樊
37
2025-11-19 18:04:43
栏目: 智能运维

Ubuntu 清理日志文件的实用方法

一、使用 journalctl 清理 systemd 日志

  • 查看当前日志占用空间:sudo journalctl --disk-usage
  • 按时间保留:
    • 保留最近7 天sudo journalctl --vacuum-time=7d
    • 保留最近1 个月sudo journalctl --vacuum-time=1month
  • 按大小保留:
    • 保留最近500MBsudo journalctl --vacuum-size=500M
    • 保留最近100MBsudo journalctl --vacuum-size=100M
  • 快速释放空间(清空 journal 存储):sudo journalctl --vacuum-size=0
  • 说明:以上命令仅影响 systemd-journald 的二进制日志,不会删除 /var/log/ 下的文本日志。

二、清理 /var/log 文本日志

  • 定位大日志文件:sudo du -h /var/log | sort -hr | head
  • 清空单个日志(更安全,保持文件句柄):sudo truncate -s 0 /var/log/syslog
  • 批量清空所有 .log 文件(谨慎):sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
  • 删除已轮转的旧日志(如 .gz、.old):sudo find /var/log -type f -name "*.gz" -o -name "*.old" -delete
  • 不建议直接 sudo rm -rf /var/log/*,可能导致正在写入的日志损坏或应用异常。

三、配置 logrotate 自动轮转与压缩

  • 系统日志常用配置示例(/etc/logrotate.d/rsyslog/etc/logrotate.conf):
    /var/log/syslog {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 0640 root adm
    }
    
    /var/log/auth.log {
        daily
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 0640 root adm
    }
    
  • 立即执行一次轮转(用于测试或临时释放):sudo logrotate -f /etc/logrotate.conf
  • 建议:保持默认轮换策略,按需调整 rotate(保留天数)与 compress(压缩旧日志)。

四、清理 APT 缓存与临时文件(释放空间)

  • 清理软件包缓存:
    • 删除旧版本包:sudo apt-get autoclean
    • 删除全部下载包:sudo apt-get clean
    • 删除不再需要的依赖:sudo apt-get autoremove
  • 清理临时文件:sudo rm -rf /tmp/*
  • 说明:这些操作不直接清理日志,但常能快速释放大量空间,便于后续日志维护。

五、注意事项

  • 优先使用 truncate -s 0journalctl --vacuum-* 等“清空/收缩”方式,避免粗暴删除正在写入的日志文件。
  • 清理前确认日志不再用于审计或故障排查;生产环境建议先备份关键日志。
  • 清理后可用 journalctl --disk-usagedu -h /var/log 复核空间释放效果。

0