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系统日志,平衡磁盘空间与系统可维护性。