find命令查找并删除指定天数前的日志(如30天前),需指定Tomcat日志目录(默认/var/log/tomcat/或安装目录下的logs)。find /var/log/tomcat/ -mtime +30 -name "*.log" -exec rm -rf {} \;
find /var/log/tomcat/ -mtime +30 -name "catalina.*.out" -exec rm -rf {} \;
catalina.out等大日志文件,避免删除后无法追溯。echo "" > /var/log/tomcat/catalina.out
crontab -e设置定时任务(如每天凌晨执行)。
clear_tomcat_logs.sh:#!/bin/bash
LOG_DIR="/var/log/tomcat"
find "$LOG_DIR" -mtime +15 -name "*.log" -exec rm -rf {} \;
find "$LOG_DIR" -mtime +15 -name "catalina.*.out" -exec rm -rf {} \;
0 0 * * * /path/to/clear_tomcat_logs.sh
logrotate配置实现日志按天切割、压缩并保留指定天数(如7天),无需手动删除。
/etc/logrotate.d/tomcat:/var/log/tomcat/catalina.out {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
logrotate -d /etc/logrotate.d/tomcat,确认无误后重启服务。if [ -f /var/log/tomcat/catalina.out ]; then
LOG_SIZE=$(du -b /var/log/tomcat/catalina.out | cut -f1)
if [ $LOG_SIZE -gt 10737418240 ]; then
echo "" > /var/log/tomcat/catalina.out
fi
fi
sudo或指定用户)。systemd管理Tomcat,需同时清理journalctl中的日志(参考journalctl --vacuum-size=100M)。参考来源: