Ubuntu日志文件清理方法
Ubuntu系统的日志文件主要存储在/var/log目录下,长期积累会占用大量磁盘空间。以下是几种安全有效的清理方法,覆盖不同场景需求:
journalctl是systemd的日志管理工具,专为systemd-journald生成的日志设计,操作便捷且安全。
journalctl --disk-usage 输出示例:Archived and active journals take up 1.2G in the file system.sudo journalctl --vacuum-time=1week 保留最近1个月的日志:sudo journalctl --vacuum-time=1month sudo journalctl --vacuum-size=100M sudo journalctl --vacuum-by-service=ssh.service 该方法无需直接操作/var/log目录,避免误删系统关键日志。适用于需要精准控制删除内容的场景,但需注意不要删除系统关键日志(如syslog、auth.log、kern.log等)。
ls -l /var/log syslog文件(保留文件但清空内容):sudo > /var/log/syslog find命令快速清空/var/log下所有.log文件:sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \; auth.log(需确认该日志无后续用途):sudo rm /var/log/auth.log ⚠️ 警告:避免使用sudo rm -rf /var/log/*,可能导致系统无法诊断故障。logrotate是Ubuntu自带的日志轮转工具,可自动压缩、删除旧日志,无需手动干预。
/etc/logrotate.conf定义了全局规则,服务级配置在/etc/logrotate.d/目录下(如rsyslog对应系统日志):cat /etc/logrotate.conf cat /etc/logrotate.d/rsyslog sudo logrotate -f /etc/logrotate.conf /etc/logrotate.d/rsyslog,修改为保留7天日志并压缩:/var/log/syslog { daily rotate 7 compress delaycompress missingok notifempty create 640 root adm } 参数说明:daily(每日轮转)、rotate 7(保留7份)、compress(压缩旧日志)。通过find命令按时间或类型筛选日志文件,适合清理特定时间段的日志。
sudo find /var/log -type f -name "*.log" -mtime +7 -delete 参数说明:-mtime +7(7天前修改的文件)、-delete(删除匹配文件)。sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \; 该方法不会删除文件,仅清空内容,适合保留文件结构但释放空间。/home目录),防止误删导致故障无法排查。df -h命令确认磁盘空间是否释放。通过上述方法,可有效管理Ubuntu系统日志,平衡磁盘空间与系统可维护性。