优先选-mtime而非-atime,因mtime随缓存写入稳定更新、可追溯且不受文件系统挂载选项限制;而-atime常因relatime/noatime策略不更新或延迟,导致过期判断失准。

缓存失效处理中,用 find 配合 -mtime 清理旧缓存,核心是“按修改时间判断是否过期”,而不是依赖访问行为——因为缓存写入即更新 mtime,它稳定、可追溯、无需额外挂载配置。
为什么优先选 -mtime 而不是 -atime
atime 受文件系统挂载选项(如 relatime 或 noatime)限制,常不更新或延迟更新,导致 -atime +30 查不准;而缓存文件生成/刷新时必然触发 mtime 更新,-mtime 更符合“缓存写入即生效、过期即淘汰”的业务逻辑。
- 缓存写入后极少再改内容 → mtime ≈ 缓存生成时间
- 无需调整
/etc/fstab或 remount,开箱即用 - 避免因 atime 不可靠导致误删活跃缓存或漏删僵尸缓存
确认缓存路径与文件特征
先明确缓存存放位置(如 /var/cache/app/、/tmp/cache/)和典型格式(如 *.html、*.json、无后缀但含 cache_ 前缀的文件)。不要直接扫根目录。
- 用
ls -lt /var/cache/app/ | head -5看最新文件时间,建立直观预期 - 若缓存按日期命名(如
cache_20260810.dat),可加-name "cache_*.dat"进一步收窄范围 - 加
-maxdepth 2限制搜索深度,防跨子挂载点或深层嵌套误伤
安全预览:先看再删
执行删除前,务必用 -ls 或 -print 列出将被清理的文件,人工核对时间、路径、类型是否合理:
- 查 30 天前的普通缓存文件:
find /var/cache/app -maxdepth 2 -type f -mtime +30 -ls - 只看路径(更简洁):
find /var/cache/app -type f -mtime +30 -print | head -20 - 若需排除某些保留文件(如
cache_latest.json),加! -name "cache_latest.json"
执行清理:推荐 -delete,慎用 -exec rm
-delete 是 find 内置动作,自动处理空格、换行、特殊字符,比 -exec rm -f {} \; 更安全高效(要求 find ≥ 4.2.3,主流系统均满足):
- 标准清理命令:
find /var/cache/app -maxdepth 2 -type f -mtime +30 -delete - 加日志记录(推荐):
find /var/cache/app -type f -mtime +30 -delete >> /var/log/cache_cleanup.log 2>&1 - 若缓存目录下有大量小文件,可加
ionice -c3降低 I/O 优先级:find /var/cache/app -type f -mtime +30 -exec ionice -c3 rm -f {} \;











