清理Ubuntu系统日志的实用技巧
Ubuntu系统的日志文件主要存储在/var/log目录下,随着时间推移会占用大量磁盘空间。以下是几种安全有效的清理方法,覆盖不同场景需求:
journalctl是Ubuntu管理systemd日志的核心工具,可精准清理旧日志或特定服务的日志,避免误删系统关键信息。
journalctl --disk-usage(显示当前日志总大小,如“1.2G”);sudo journalctl --vacuum-time=2weeks(删除两周前的所有日志,保留近期);sudo journalctl --vacuum-time=3d(删除3天前的日志);sudo journalctl --vacuum-size=100M(删除旧日志直至总大小不超过100MB,适合磁盘空间紧张的情况);sudo journalctl --vacuum-by-service=ssh.service(仅删除SSH服务的日志,不影响其他系统日志)。适用于需要删除特定日志文件或快速释放空间的场景,操作前需确认文件用途。
ls -l /var/log(按修改时间排序可加-t参数,如ls -lt /var/log,最新修改的文件在前);sudo > /var/log/auth.log(清空认证日志,不删除文件本身,适合保留文件结构但释放空间);sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;(查找/var/log下所有.log后缀的文件,并将其大小截断为0,即清空内容);sudo rm /var/log/syslog(删除系统日志文件,删除前需确认该文件是否不再需要,如/var/log/kern.log记录内核信息,删除可能影响故障排查)。logrotate是Ubuntu默认的日志管理工具,可自动压缩、删除旧日志,避免手动操作麻烦。
cat /etc/logrotate.conf(了解全局设置,如日志保留数量rotate 4表示保留4个旧日志,压缩方式compress表示用gzip压缩);cat /etc/logrotate.d/rsyslog(查看rsyslog服务的日志轮转规则,如/var/log/syslog的轮转周期为每周,保留4个旧日志);sudo logrotate -f /etc/logrotate.conf(强制执行轮转,立即应用配置规则,无需等待下次定时任务)。sudo cp /var/log/syslog ~/syslog_backup(防止误删后无法追溯系统问题);/var/log/syslog(系统综合日志)、/var/log/auth.log(认证日志,含登录记录)、/var/log/kern.log(内核日志,含硬件/驱动问题)等文件对故障排查至关重要,删除前需确认需求;crontab -e添加:0 2 * * 0 sudo journalctl --vacuum-size=200M(每周清理至200MB以内)。以上方法可根据系统使用场景组合使用,例如:日常用journalctl按时间清理,长期未清理用find批量清空,自动化需求用logrotate配置轮转,确保系统日志既不占用过多空间,又能保留必要信息。