Ubuntu系统常见的日志清理策略主要包括以下几类,覆盖从临时应急到长期自动化的全场景需求:
journalctl是Ubuntu中管理Systemd日志的核心工具,可通过命令快速清理过期或过大的日志:
journalctl --disk-usage(显示当前Journal日志占用的磁盘空间,如“1.2G”);sudo journalctl --vacuum-time=1w(删除1周前的日志,仅保留最近7天);sudo journalctl --vacuum-time=3d(删除3天前的日志);sudo journalctl --vacuum-size=500M(删除日志直到占用空间≤500MB)。对于/var/log目录下的大量.log文件(如syslog、auth.log等),可通过以下命令批量清空内容:
sudo truncate -s 0 /var/log/syslog(将syslog文件大小截断为0字节,保留文件属性);sudo > /var/log/auth.log(用重定向覆盖文件内容,实现清空);sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;(查找/var/log下所有.log文件,并逐个清空)。logrotate是Ubuntu默认的日志轮转工具,可通过配置规则实现日志的定期轮转、压缩、删除,避免日志文件无限增长:
/etc/logrotate.conf(全局设置),服务特定配置文件存放在/etc/logrotate.d/目录下(如rsyslog、apache2等);daily:每天轮转一次;rotate 7:保留最近7个轮转后的日志文件;compress:压缩旧日志(如syslog.1.gz);missingok:日志文件不存在时不报错;notifempty:日志为空时不轮转;create 0640 root adm:轮转后创建新日志文件,设置权限为0640,属主为root,属组为adm;/etc/logrotate.d/rsyslog,添加:/var/log/syslog {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm
}
sudo logrotate -f /etc/logrotate.conf(强制执行轮转,验证配置是否正确)。当磁盘空间极度紧张或需要完全删除旧日志时,可采用此方法:
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),防止误删导致数据丢失;rm -rf命令需谨慎,确保目标路径正确;df -h或du -sh /var/log/定期检查日志目录占用情况,及时采取措施。