前言
日常例行巡检服务器的时候发现tmp文件夹占用空间极大,文件夹内部产生大量文件。
根据之前本人定位查明的原因,为某业务软件产生,具体产生原因没有源代码,所以无法排查。
根据命令lsof
查看,未发现访问到tmp文件夹内的文件进程。
大致估计由于某个代码缺陷导致生成大量该文件,且未被读取使用(只写不读)。
处理
按照通用的做法:使用rm -rf /tmp/*
命令,发现报错argument过长。
使用ls
命令查看发现有大量文件,该命令也运行缓慢。
针对该问题解决方法构思:
- 缩短tmp回收时间间隔;
- 立刻删除释放空间;
方法1
修改文件/usr/lib/tmpfiles.d/tmp.conf
,将空间回收时间改为1d(1天),等待系统自动回收。
更多tmpfiles.d具体的解释,请运行man tmpfiles.d
查看手册。
方法2
适用于critical状态的,空间已经占用满的情况。
众所周知,find
命令可以查找文件,同时也提供了对应删除的flag参数。
注意:请勿使用类似
find /tmp/ -name "*" -exec rm -rf {} \
命令,在文件数量多的情况下也会报参数过长;同时,该命令效率极其低下。
我们采用删除对应前缀的临时文件,执行 find /tmp/ -name "MediaBox*" -delete
命令即可。
后记
从百度查询的大部分都是误导性的使用find .. -exec rm -rf {} \
命令来搜索删除文件,实际效率低下。
同时,大量文件使用通配符,然后 rm -rf
也是极其不现实。
少听信百度迷信(为了SEO不择手段,点名CSDN、腾讯云和阿里云污染搜索条目),多翻手册学习、查英文搜索才是真道理。
推荐网站: