在 CentOS 上清理 Java 日志,要分情况处理,因为 Java 日志可能来自 应用本身、Tomcat、系统服务、容器 等。下面按常见场景给你一个完整、安全的清理方案。
/var/log/
/opt/*/logs/
/usr/local/*/logs/
/home/*/logs/
/var/log/tomcat/
/var/log/elasticsearch/
/var/log/kafka/
find / -name "*.log" 2>/dev/null | grep -E "java|tomcat|spring|app"
app.log
app.log.2024-01-01
app.log.2024-01-02.gz
# 只删除 7 天前的日志
find /opt/app/logs -name "*.log*" -mtime +7 -delete
⚠️ **不要直接 rm -rf ***,避免误删正在写入的日志
如果 Java 进程正在写日志:
: > app.log
或
truncate -s 0 app.log
✅ 不会中断程序
❌ 直接 rm 可能导致磁盘不释放
/var/log/tomcat/
/usr/local/tomcat/logs/
catalina.out
localhost.log
host-manager.log
manager.log
: > /usr/local/tomcat/logs/catalina.out
find /usr/local/tomcat/logs -name "*.log" -mtime +7 -delete
find /usr/local/tomcat/logs -name "*.txt" -mtime +7 -delete
ls /etc/logrotate.d/
vim /etc/logrotate.d/myjava
/opt/app/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
✅ copytruncate 适合 Java 程序
✅ 自动清理,无需人工干预
journalctl -u your-java-service --disk-usage
journalctl --vacuum-time=7d
或
journalctl --vacuum-size=500M
docker logs --tail 100 容器名
清理 Docker 日志:
truncate -s 0 /var/lib/docker/containers/*/*-json.log
df -h # 查看磁盘
du -sh /var/log/*
lsof | grep deleted # 查看被删除但未释放的文件
| 场景 | 建议 |
|---|---|
| 正在运行 | truncate |
| 历史日志 | find + mtime |
| 长期方案 | logrotate |
| 容器 | docker log 限制 |
✅ 精确分析你的 Java 日志路径
✅ 写一份 logrotate 配置
✅ 判断 磁盘占用是否由 Java 日志引起
你可以直接贴:
ls -lh /var/log/
ps -ef | grep java