Ubuntu Java日志过大清理与治理
一、先定位日志来源与大小
sudo du -ah /var/log /opt/tomcat/logs /var/log/yourapp 2>/dev/null | sort -rh | head -n 10sudo find /var/log /opt/tomcat/logs /var/log/yourapp -type f -name "*.log" -mtime -7 -ls二、优先方案 Logrotate 自动轮转与压缩
sudo vim /etc/logrotate.d/java-app/home/data-govern/data-govern-executor.log {
size 1G
rotate 100
compress
missingok
notifempty
copytruncate
}
sudo logrotate -d /etc/logrotate.d/java-appsudo logrotate -f /etc/logrotate.d/java-app三、无法轮转时的安全清理与切割
> /path/to/app.log 或 truncate -s 0 /path/to/app.logsplit -b 200M -d -a 4 /path/to/app.log /path/to/archive/app.log.> /path/to/app.logrm 大文件后,若进程仍持有文件句柄,磁盘空间不会立即释放;清空/切分更安全。#!/usr/bin/env bash
LOG_DIR="/var/log/yourapp"
find "$LOG_DIR" -type f -name "*.log" -mtime +7 -delete
0 3 * * * /path/to/clean_logs.shtar czf /backup/logs-$(date +%F).tgz /var/log/yourapp/*.log.2025*find /var/log/yourapp -type f -name "*.log.2025*" -mtime +30 -delete四、按场景给出可直接使用的配置
/home/app/runner.log {
size 1G
rotate 100
compress
missingok
notifempty
copytruncate
}
/opt/tomcat/logs/catalina.out {
daily
rotate 30
compress
missingok
notifempty
copytruncate
}
0 3 * * * find /var/log/yourapp -type f -name "*.log" -mtime +7 -delete0 2 * * * find /var/log/yourapp -type f -name "*.log" -mtime +30 -delete五、验证与运维要点
sudo logrotate -d /etc/logrotate.d/java-appsudo logrotate -f /etc/logrotate.d/java-app> file 或 truncate -s 0 file,不要直接 rm 正在写入的文件。