Linux 中 /tmp 目录自动清理机制

Linux 系统中的 /tmp 目录通常会自动清理,但其清理机制因发行版和系统配置而异。以下是不同场景下的清理规则和配置方式:


一、自动清理机制的核心原理

  1. 基于时间的清理

    • 文件在 /tmp 中保留的时长由系统服务决定,默认通常为 10天未访问 后删除(通过 atimemtime 判断)。
    • 配置路径:/usr/lib/tmpfiles.d/tmp.conf/etc/tmpfiles.d/*.conf,例如:
      v /tmp 1777 root root 10d  # 10天后清理
      v /var/tmp 1777 root root 30d  # /var/tmp 保留30天
      
      修改后需重启服务:systemctl restart systemd-tmpfiles-clean
  2. 系统重启时的清理

    • 传统行为:部分系统(如 RHEL 5/6)重启时会清空 /tmp,但现代发行版(如 RHEL 7+)默认不会在重启时自动清理,除非配置了 tmp.mount 或手动脚本。
    • 例外:若 /tmp 挂载为 tmpfs(内存文件系统),重启后内容会丢失。

二、不同发行版的清理服务

  1. Systemd 系统(如 RHEL 7+/CentOS 7+/Ubuntu 16.04+)

    • 依赖 systemd-tmpfiles-clean.timer 定时触发清理,默认每天运行一次。
    • 检查服务状态:
      systemctl list-timers | grep tmpfiles  # 查看下次执行时间
      journalctl -u systemd-tmpfiles-clean  # 查看日志
      
  2. 旧版系统(如 RHEL 6/CentOS 6)

    • 使用 tmpwatch 工具,通过 /etc/cron.daily/tmpwatch 脚本每日清理,默认保留 /tmp 10天、/var/tmp 30天的文件。
    • 手动执行:tmpwatch 24 /tmp(删除24小时未访问的文件)。
  3. Debian/Ubuntu 替代方案

    • 使用 tmpreaper(功能类似 tmpwatch),配置在 /etc/tmpreaper.conf

三、自定义清理策略

  1. 调整保留时间

    • 修改 /etc/tmpfiles.d/tmp.conf,例如将 10d 改为 5d,并重启服务。
    • 排除特定文件(如 Tomcat 临时目录):
      x /tmp/tomcat.*  # 添加到配置文件
      
  2. 手动清理命令

    • 按时间删除:
      find /tmp -type f -atime +7 -delete  # 删除7天未访问的文件
      
    • 排除 root 用户文件:
      find /tmp -type f \( ! -user root \) -atime +3 -delete  # 非root用户文件保留3天。
      
  3. 定时任务(Cron)

    • 添加定时任务(如每6小时清理一次):
      0 */6 * * * /usr/bin/find /tmp -type f -mtime +2 -delete
      
      或使用 tmpwatch/tmpreaper

四、注意事项

  1. 风险提示

    • 盲目清理可能破坏正在使用的锁文件(如 MySQL 套接字)或日志,导致服务异常。
    • 建议优先通过系统服务(如 systemd-tmpfiles)管理,而非手动 rm -rf
  2. 空间不足应急处理

    • 临时脚本可删除空文件或旧文件:
      find /tmp -type f -empty -delete  # 删除空文件
      find /tmp -type f -size +1M -mtime +1 -delete  # 删除大于1MB且1天未修改的文件。
      

五、总结

  • 默认规则:多数现代 Linux 系统通过 systemd-tmpfilestmpwatch 自动清理 /tmp,默认保留 10天
  • 强制清理:若需重启时清空,可配置 tmp.mount 或自定义脚本。
  • 监控建议:定期检查 /tmp 空间使用(df -h /tmp),并结合业务需求调整清理策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值