Ubuntu系统日志清理方法
Ubuntu系统的日志文件主要存储在/var/log目录下,长期积累会占用大量磁盘空间。以下是三种常用的清理方法,覆盖不同场景需求:
journalctl是systemd的日志管理工具,可高效管理journald服务的日志(系统默认日志存储方式)。
journalctl --disk-usage,可快速了解当前日志占用的总空间(如“Log data is stored in 2 files, total size 5.2G”)。sudo journalctl --vacuum-time=7d;sudo journalctl --vacuum-time=1month;sudo journalctl --vacuum-time=3months(可根据需求调整时间单位,如weeks、years)。sudo journalctl --vacuum-size=100M;sudo journalctl --vacuum-size=500M(适合磁盘空间紧张的场景)。sudo journalctl --vacuum-by-service=ssh.service(替换ssh.service为目标服务名,可通过systemctl list-units --type=service查看服务列表)。若需直接操作日志文件,需进入/var/log目录,选择性地删除或清空文件。
ls -l /var/log,可看到syslog(系统综合日志)、auth.log(认证日志)、kern.log(内核日志)、dmesg(启动日志)等常见文件。syslog文件(保留文件但删除内容):sudo > /var/log/syslog;auth.log文件:sudo > /var/log/auth.log(避免直接删除文件,防止影响依赖日志的服务)。kern.log文件(需确认无后续服务依赖):sudo rm /var/log/kern.log;dmesg文件:sudo rm /var/log/dmesg(删除后重启系统会生成新文件)。/var/log目录(高风险):sudo rm -rf /var/log/*会删除所有日志文件,仅建议在系统调试或全新安装后使用(需提前备份重要日志)。logrotate是Ubuntu默认的日志轮转工具,可自动压缩、删除旧日志,避免手动操作。
/etc/logrotate.conf定义了全局规则(如默认保留7天的压缩日志);rsyslog)位于/etc/logrotate.d/目录下(如/etc/logrotate.d/rsyslog管理syslog、auth.log等文件的轮转)。sudo logrotate -f /etc/logrotate.conf,可强制立即执行轮转(无需等待配置的时间周期)。sudo nano /etc/logrotate.d/rsyslog),修改以下参数:/var/log/syslog {
rotate 7 # 保留7个轮转文件(即7天的日志)
daily # 每天轮转一次
compress # 压缩旧日志(节省空间)
delaycompress # 延迟压缩(保留最近一个未压缩的日志)
missingok # 文件不存在时不报错
notifempty # 日志为空时不轮转
create 0640 root adm # 创建新日志文件时设置权限和所有者
}
保存后,logrotate会在下次触发时按新规则执行。sudo cp /var/log/syslog ~/syslog_backup),避免误删导致无法排查问题。logrotate自动化管理,减少人为操作风险。Zabbix、Nagios)或审计系统依赖该日志(如auth.log记录登录信息,删除后无法追溯认证记录)。--vacuum-size的值)。