在开始清理前,需明确日志文件的位置(Ubuntu系统日志主要存储在/var/log/目录下,包括syslog、auth.log、dpkg.log等)及操作权限(所有操作需使用sudo提升权限,避免权限不足导致失败)。此外,建议备份重要日志(如sudo cp /var/log/syslog ~/syslog_backup),以防误删导致无法追溯系统问题。
journalctl命令(Systemd日志管理)journalctl是Ubuntu系统默认的日志管理工具,可高效管理systemd生成的日志(包括内核、服务及系统日志)。
journalctl --disk-usage(显示当前日志占用的总空间);sudo journalctl --vacuum-size=100M(将日志总大小限制在100MB以内,自动删除旧日志);sudo journalctl --vacuum-time=2weeks(删除两周前的所有日志);sudo journalctl --vacuum-by-service=ssh.service(仅删除ssh.service的日志)。若需清理特定日志文件或一次性释放大量空间,可手动操作:
sudo truncate -s 0 /var/log/syslog(将syslog文件大小截断为0字节);或sudo > /var/log/auth.log(用空内容覆盖文件);.log文件):sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;(查找/var/log下所有.log文件并清空);sudo rm /var/log/syslog(删除文件),随后sudo touch /var/log/syslog && sudo chmod 640 /var/log/syslog && sudo chown root:adm /var/log/syslog(重新创建空文件并设置正确权限,避免服务报错)。/var/log下的系统日志(如auth.log、syslog)可能导致系统无法诊断问题,建议仅清理确认无用的日志(如dpkg.log、kern.log)。logrotate工具(自动化管理)logrotate是Ubuntu自带的日志轮转工具,可实现定期压缩、备份、删除旧日志,避免手动操作。
/etc/logrotate.conf(全局规则),服务特定配置文件/etc/logrotate.d/(如rsyslog、apt);/etc/logrotate.d/rsyslog):/var/log/syslog {
daily # 每天轮转一次
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(如syslog.1.gz)
delaycompress # 延迟压缩(避免当日志轮转失败时占用空间)
missingok # 文件不存在时不报错
notifempty # 文件为空时不轮转
create 0640 root adm # 重新创建日志文件并设置权限
}
sudo logrotate -f /etc/logrotate.conf(强制执行轮转,即使未达到配置条件)。/var/log下的auth.log(认证日志)、syslog(系统日志)、kern.log(内核日志)等文件对系统诊断至关重要,清理前需确认日志用途;logrotate配置为定时任务(默认已启用,可通过sudo systemctl status cron检查),或每周手动执行一次清理;df -h(查看磁盘使用情况)或du -sh /var/log/(查看/var/log目录大小),及时发现日志膨胀问题;logrotate配置文件后,建议用sudo logrotate -d /etc/logrotate.d/rsyslog(调试模式)测试规则是否正确,避免配置错误导致日志丢失。