在 CentOS 上清理 Java 日志,需要根据日志类型和产生方式来处理。下面按常见场景给你一套安全、可操作的清理方案。
/var/log/
/usr/local/xxx/logs/
/opt/xxx/logs/
~/logs/
常见文件名:
catalina.out(Tomcat)app.logspring.logserver.loggc.log*.log.*不要直接 rm 正在写入的日志文件
# 清空 catalina.out
: > /opt/tomcat/logs/catalina.out
# 清空所有 .log 文件
for f in /opt/app/logs/*.log; do
: > "$f"
done
✅ 优点:
rm -f app.log
⚠️ 如果应用还在写日志,磁盘空间不会释放,必须重启应用。
find /opt/app/logs -name "*.log*" -mtime +7 -delete
find /opt/app/logs -name "*.gz" -mtime +7 -delete
/opt/tomcat/logs/
: > /opt/tomcat/logs/catalina.out
find /opt/tomcat/logs -name "*.log" -mtime +7 -delete
find /opt/tomcat/logs -name "*.txt" -mtime +7 -delete
gc.log
gc.log.0
gc.log.1
清理:
find / -name "gc.log*" -mtime +7 -delete
✅ 建议 JVM 参数:
-Xlog:gc*:file=/var/log/gc.log:time,uptime,level,tags:filecount=5,filesize=10M
创建配置:
vim /etc/logrotate.d/java-app
示例:
/opt/app/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
立即测试:
logrotate -f /etc/logrotate.d/java-app
docker logs --tail 100 容器名
docker system prune -f
kubectl logs pod名 > /dev/null
df -h
du -sh /var/log/*
lsof | grep deleted
✅ 生产环境最佳实践
: > file 清空日志logrotate 自动轮转rm 正在写入的日志如果你愿意,可以告诉我:
我可以帮你定制一套完整清理方案。