Ubuntu清理日志文件的常用方法
Ubuntu系统的日志文件主要存储在/var/log目录下,长期积累会占用大量磁盘空间。以下是安全有效的清理方法,覆盖系统日志(journalctl)、手动删除、自动轮转及第三方工具等场景:
journalctl是Ubuntu管理systemd日志的核心工具,支持按时间或大小清理旧日志,不影响系统运行。
journalctl --disk-usage
输出示例:Archived and active journals take up 1.2G in the file system.sudo journalctl --vacuum-time=1week
也可指定其他时间单位(如2days、3months)。sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-by-service=ssh.service
该方法不会删除当前活动的日志,仅清理归档的旧日志。适用于需要删除特定日志文件的场景,但需谨慎操作,避免误删系统关键日志。
ls -l /var/log
常见日志文件包括syslog(系统日志)、auth.log(认证日志)、kern.log(内核日志)、dmesg(启动日志)等。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
注意:避免删除syslog、kern.log等系统关键日志,否则可能导致无法排查系统故障。logrotate是Ubuntu默认的日志管理工具,可自动压缩、删除旧日志,无需手动干预。
/etc/logrotate.conf定义了全局规则(如默认保留7天的日志),服务特定配置在/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(压缩旧日志)、create(创建新日志文件并设置权限)。cp /var/log/syslog ~/syslog_backup备份关键日志,防止误删后无法恢复。rm -rf /var/log/*等命令,可能破坏系统日志结构,导致服务异常。sudo journalctl --vacuum-time=1week),避免日志堆积。通过上述方法,可有效清理Ubuntu系统中的日志文件,释放磁盘空间,同时保证系统日志的可用性。根据实际需求选择合适的方法,优先推荐使用journalctl和logrotate,兼顾安全性和自动化。