Ubuntu清理日志文件的正确方法
journalctl是systemd的日志管理工具,可安全清理系统日志(不会影响正在运行的服务)。
journalctl(实时查看系统日志)。sudo journalctl --vacuum-size=100M(保留最近100MB日志,删除旧日志)。sudo journalctl --vacuum-time=2weeks(删除两周前的日志)。sudo journalctl -u nginx --vacuum-size=100M(仅清理nginx服务的日志)。sudo journalctl --vacuum-priority=crit(删除优先级低于“crit”(严重)的日志,保留关键错误信息)。日志文件默认存储在/var/log目录下,手动删除需注意避免删除系统关键日志(如syslog、auth.log),否则可能导致故障排查困难。
ls -l /var/log(列出所有日志文件及大小)。sudo rm /var/log/syslog(删除系统日志)、sudo rm /var/log/auth.log(删除认证日志)。sudo > /var/log/syslog(将syslog内容清空,文件仍存在,避免服务因文件缺失报错)。logrotate是Ubuntu默认的日志轮转工具,可自动压缩、备份、删除旧日志,无需手动干预。
cat /etc/logrotate.conf(了解全局配置,如默认保留7天日志)。sudo nano /etc/logrotate.d/rsyslog(修改rsyslog配置,适用于syslog、auth.log等系统日志),示例配置:/var/log/syslog {
daily # 每天轮转
rotate 7 # 保留7份
compress # 压缩旧日志(如syslog.1.gz)
delaycompress # 延迟压缩(不压缩最新的旧日志)
missingok # 日志文件不存在也不报错
notifempty # 日志为空时不轮转
create 0640 root adm # 创建新日志文件,权限为0640,属主root,属组adm
}
sudo logrotate -f /etc/logrotate.conf(强制执行轮转,立即应用配置)。journalctl或logrotate,避免手动删除(减少误删风险)。cp /var/log/syslog ~/syslog_backup备份重要日志(如syslog、auth.log)。df -h确认磁盘空间是否释放(重点关注/分区)。