清理 Linux 上的大量日志,通常可以从定位大文件 → 安全清理 → 设置自动轮转三个层面来做。下面按常见场景说明。
df -h
du -h --max-depth=1 /var/log
find /var/log -type f -size +100M
推荐用于正在写入的日志
> /var/log/syslog
> /var/log/messages
> /var/log/nginx/access.log
或:
truncate -s 0 /var/log/syslog
✅ 优点:
rm -f /var/log/*.log.1
rm -f /var/log/*.gz
常见可删文件:
*.log.1*.log.2*.gz*.old⚠️ 不要直接删 *.log(可能正在写入)
# 查看占用
journalctl --disk-usage
# 只保留最近 3 天
journalctl --vacuum-time=3d
# 限制最大 500MB
journalctl --vacuum-size=500M
du -sh /var/lib/docker/containers/*
清理方式(不删容器):
truncate -s 0 /var/lib/docker/containers/*/*-json.log
✅ 长期方案:配置 daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
ls /etc/logrotate.d/
/var/log/nginx/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 www-data adm
postrotate
systemctl reload nginx
endscript
}
logrotate -vf /etc/logrotate.conf
| 类型 | 路径 |
|---|---|
| 系统日志 | /var/log/syslog / messages |
| 登录日志 | /var/log/secure / auth.log |
| Nginx | /var/log/nginx/ |
| Docker | /var/lib/docker/containers/ |
| systemd | journalctl |
rm -rf /var/log/*.log 文件find /var/log -type f -name "*.gz" -delete
find /var/log -type f -name "*.1" -delete
journalctl --vacuum-time=7d
如果你愿意,可以告诉我:
df -h 输出我可以给你一套完全适合你环境的清理方案。