手动删除日志文件
定位Tomcat日志目录
Tomcat日志通常位于安装目录下的 logs/
子目录中,常见路径:
/opt/tomcat/logs/ # 默认安装路径 /usr/local/tomcat/logs/ /home/user/tomcat/logs/
使用命令进入目录:
cd /opt/tomcat/logs/ # 替换为你的实际路径
查看并删除日志文件
-
查看日志文件列表:
ls -lh *.log *.txt *.out
主要文件包括:
catalina.out
:主运行日志localhost_access_log.*.txt
:访问日志catalina.yyyy-mm-dd.log
:每日日志
-
删除指定日志(例如清理30天前的访问日志):
find . -name "localhost_access_log*.txt" -mtime +30 -exec rm -f {} \;
-mtime +30
:修改时间超过30天的文件-exec rm -f {} \;
:强制删除匹配的文件
-
清空正在写入的日志(如
catalina.out
):> catalina.out # 清空内容但保留文件(避免重启Tomcat)
自动清理方案(推荐)
使用 logrotate
工具
logrotate
是Linux自带的日志管理工具,可定时压缩、轮转和删除日志。
步骤:
-
创建配置文件:
sudo nano /etc/logrotate.d/tomcat
-
写入以下配置(按需调整):
/opt/tomcat/logs/catalina.out { daily # 每天轮转 rotate 7 # 保留7份旧日志 compress # 压缩旧日志 delaycompress # 延迟压缩(下次轮转时压缩) missingok # 文件不存在时不报错 notifempty # 空文件不轮转 copytruncate # 复制后清空原文件(无需重启Tomcat) } /opt/tomcat/logs/localhost_access_log*.txt { monthly # 每月轮转 rotate 6 # 保留6个月 compress missingok }
-
手动测试配置:
sudo logrotate -f /etc/logrotate.d/tomcat
通过 cron
定时任务
定期执行清理脚本(例如每天凌晨2点):
- 创建脚本
/opt/scripts/clean_tomcat_logs.sh
:#!/bin/bash LOG_DIR="/opt/tomcat/logs" find $LOG_DIR -name "*.log" -mtime +15 -exec rm -f {} \; find $LOG_DIR -name "*.txt" -mtime +30 -exec rm -f {} \;
- 添加可执行权限:
chmod +x /opt/scripts/clean_tomcat_logs.sh
- 加入cron计划:
crontab -e
添加行:
0 2 * * * /opt/scripts/clean_tomcat_logs.sh
关键注意事项
-
避免直接删除正在写入的日志
- 使用
> catalina.out
清空而非rm
,防止Tomcat因文件句柄丢失报错。 - 若必须删除,先重启Tomcat:
sudo systemctl restart tomcat
。
- 使用
-
备份重要日志
删除前确认日志无保留价值,必要时备份:cp catalina.out catalina_$(date +%F).backup
-
权限问题
- 若提示权限不足,使用
sudo
或切换为Tomcat用户(通常为tomcat
):sudo -u tomcat find /opt/tomcat/logs/ -name "*.log" -mtime +30 -delete
- 若提示权限不足,使用
最佳实践建议
- 首选
logrotate
:自动化管理更安全,避免手动误删。 - 监控磁盘空间:设置告警(如
df -h
或工具如Nagios)。 - 日志分级保留:访问日志保留30天,调试日志保留7天。
- 生产环境慎用
rm -rf
:误操作可能导致系统崩溃,建议先ls
确认文件列表。
引用说明:本文方法基于Linux文件管理通用实践及Apache Tomcat官方文档。
logrotate
配置参考了Red Hat Enterprise Linux手册,cron
用法遵循Linux标准定时任务规范,具体路径请根据实际Tomcat安装位置调整。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8781.html