Tomcat temp目录需谨慎清理:仅删除48小时前的.tmp等临时文件,避免中断上传或丢失会话;推荐用find命令定时清理,并与Commons FileUpload配置协同,确保子目录分离与日志监控。

Tomcat 的 temp 目录(位于 $CATALINA_HOME/temp)默认由 JVM 和 Web 应用在运行时自动创建临时文件,比如 JSP 编译中间件、文件上传缓存、会话快照等。它不支持内置的自动清理机制,必须通过外部策略实现定期清理。
明确 temp 目录的用途与风险
该目录不是“可随意清空”的垃圾箱:部分文件可能被正在处理的大文件上传、异步任务或未及时清理的框架(如 Commons FileUpload 未完成写入)持续占用。直接定时 rm -rf * 可能导致上传中断、500 错误或会话丢失。
安全清理的前提是:只删确定不再被使用的老文件,重点依据两个维度:
- 文件创建/最后修改时间(推荐保留至少 48 小时)
- 文件扩展名(优先清理
.tmp、.upload、.jar.tmp等明确标识临时用途的后缀)
Linux 下推荐的定时清理方案(crontab + find)
无需额外 Java 程序,用系统级命令更轻量可靠。例如,每天凌晨 2 点清理 2 天前的 .tmp 文件:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
0 2 * * * find /path/to/tomcat/temp -name "*.tmp" -type f -mtime +2 -delete
说明:
-
/path/to/tomcat/temp替换为实际路径,如/opt/tomcat/temp -
-mtime +2表示“修改时间超过 2 天”,比-ctime更稳妥(避免因文件属性变更误判) - 首次运行建议先用
-print替代-delete预览将删哪些文件 - 可追加
2>&1 >> /var/log/tomcat-temp-clean.log记录操作日志
与文件上传组件协同配置(关键细节)
如果应用使用了 Apache Commons FileUpload,它的临时文件也常落在 temp 目录下。此时需同步调整其配置,避免“刚生成就被删”:
- 在代码中显式指定安全临时目录(不共用 Tomcat 默认
temp):factory.setPath(Paths.get("/data/app-upload-temp")); - 或统一改到 Tomcat
temp下的子目录:factory.setPath(Paths.get(System.getProperty("catalina.base"), "temp", "upload")); - 再针对该子目录单独设置更激进的清理周期(如 1 小时),主
temp目录则保守清理(如 48 小时)
验证与监控建议
上线前务必做两件事:
- 在测试环境模拟大文件上传+定时清理,确认上传流程不受影响
- 监控
temp目录大小变化趋势(如用du -sh /path/to/tomcat/temp定时采集),若某天突降又快速回升,说明清理有效且无误删 - 观察 Tomcat 日志中是否出现
FileNotFoundException或IOException,尤其集中在文件上传相关路径

















