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
的值)。