Linux tmp目录定期自动清理防占盘
为何需要清理/tmp目录
Linux系统的/tmp目录用于存放临时文件,许多应用程序(如会话锁文件、下载缓存、解压包等)都会在这里生成数据。长期不清理可能导致磁盘空间被占满,引发服务异常、写入失败甚至系统崩溃。尤其在生产环境或IDC托管服务器中,磁盘满会直接影响业务连续性。
推荐自动清理方案
1. systemd-tmpfiles(现代系统首选)
多数Linux发行版已内置systemd-tmpfiles服务,通过配置文件管理临时目录的清理策略。默认配置位于/usr/lib/tmpfiles.d/和/etc/tmpfiles.d/。若要自定义/tmp清理规则,可在/etc/tmpfiles.d/下新建.conf文件,例如clean-tmp.conf:
# 清理10天未访问的临时文件
d /tmp 1777 root root 10d参数说明:d表示目录清理模式,权限1777,所有者root,组root,保留时间10d(10天)。立即生效:systemd-tmpfiles --clean,或设置定时器systemd-tmpfiles-clean.timer(默认每天执行)。
2. cron作业(灵活可控)
无法使用systemd的系统,可通过cron配合tmpwatch或find命令实现。安装tmpwatch:yum install tmpwatch(CentOS/RHEL)或apt install tmpreaper(Debian/Ubuntu)。编辑crontab:
# 每天凌晨3点清理/tmp中超过7天未访问的普通文件
0 3 * * * /usr/bin/tmpwatch --mtime --all 168 /tmp若使用find:find /tmp -type f -atime +7 -delete,注意socket文件和目录处理需谨慎。
3. 系统自启动脚本(适用于特殊场景)
某些老版本Linux可在/etc/rc.d/rc.local中添加清理命令,但需确保执行权限。不推荐作为长期方案,因为缺乏定期触发机制。
注意事项
- 避免误删关键文件:某些服务(如X11 socket、PostgreSQL插槽)依赖/tmp下的文件,建议保留时间不低于7天,且监控日志中是否出现异常删除。
- 结合业务调整:高I/O业务(如编译环境)可缩短清理间隔;数据库或会话密集型服务可延长保留时间。
- 监控与报警:即使设置了自动清理,仍建议通过
df -h配合监控工具(如Zabbix、Prometheus)设置磁盘使用率告警,防止清理失败导致占盘。 - 其他tmp变体:
/var/tmp通常保留更长时间(默认30天),可用同样方法配置;/dev/shm(tmpfs)需要手动清理或重启回收。
总结
通过systemd-tmpfiles或cron+tmpwatch实现/tmp目录的定期自动清理,能有效避免临时文件堆积导致磁盘占满。运维人员需根据业务特性选择合适保留时长,并搭配磁盘监控,确保Linux服务器稳定运行。