在 Linux 系统中,清理旧日志文件是日常运维中常见的任务。下面按常见场景 + 推荐做法给你一个清晰指南。
/var/log/:系统日志主要目录/var/log/messages/var/log/syslog/var/log/auth.log/var/log/dmesg/var/log/nginx/, /var/log/apache2/logrotate(最推荐)大多数 Linux 发行版默认已配置。
查看配置:
cat /etc/logrotate.conf
ls /etc/logrotate.d/
手动执行一次:
logrotate -f /etc/logrotate.conf
✅ 优点:
只删除时间较久的文件:
find /var/log -type f -name "*.log" -mtime +30 -delete
说明:
+30:30 天前的文件-delete:直接删除(谨慎)适合正在被进程占用的日志:
> /var/log/syslog
# 或
truncate -s 0 /var/log/syslog
⚠️ 不要直接 rm 正在写入的日志文件
journalctl --disk-usage
# 保留最近 7 天
journalctl --vacuum-time=7d
# 限制最大 500MB
journalctl --vacuum-size=500M
vim /etc/systemd/journald.conf
SystemMaxUse=500M
MaxRetentionSec=2week
重启:
systemctl restart systemd-journald
docker system prune
或限制容器日志大小(daemon.json):
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
✅ 不要删除当前正在写入的日志
✅ 生产环境优先用 logrotate
✅ 清理前可先备份重要日志
✅ 用 df -h 检查磁盘空间
如果你能告诉我:
我可以给你更精确的清理命令。