一次服务器某个目录下文件过多的处理

xiaohai 2021-05-15 21:22:57 1387人围观 标签: Linux 
简介一次服务器某个目录下文件过多的处理

登录服务器,输入任何命令,然后使用tab,提示:

cannot create temp file for here-document: No space left on device

查看磁盘使用:

[root@localhost tmp]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G   16G  3.1G  84% /
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.7G     0  3.7G   0% /dev/shm
tmpfs           3.7G  377M  3.4G  10% /run
tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
/dev/xvdb1       30G  8.8G   20G  32% /data
tmpfs           757M     0  757M   0% /run/user/0

空间并没有占用完啊!问题出在哪里呢?实在找不到问题,就看了下/tmp目录,我们的php的session存放目录就在/tmp下,有可能问题就出在这里,使用ll命令查看/tmp目录

[root@localhost ~]# ll /tmp/

出现好多sess_开头的文件,然后统计了下该目录下的文件

[root@localhost tmp]# ls | wc -l
1173794

一百多万文件,会不会问题出在这里,然后通过下面命令,删除1天之内没有改变的sess开头的文件:

[root@localhost tmp]# find /tmp -mtime +1 -name "sess*" -exec rm -rf {} \; #清理一天以前的所有sess开头的文件
[root@localhost tmp]# find /tmp -type f -name "sess*" -size 0c -exec rm -f {} \; #清理所有以sess开头并0字节的文件

足足删了半个多小时,服务器恢复正常。
可以把上面的命令加入到定时任务(这里只是记录,自己并没有加入):

[root@localhost tmp]# crontab -e  
<<< 添加以下新任务并保存(需改路径,另外1可修改,这里是指一天)>>>  
<<< 命令解释:每天凌晨2点自动找出指定位置的1天都没修改过的文件,并删除! >>>  
1 2 * * * find /tmp -mtime +1 -name "sess*" -exec rm -rf {} \; &>/dev/null
参考文献
  1. Linux磁盘爆满!明明有空间却提示磁盘空间不足!session等小文件太多删不掉!
  2. Linux 目录个数和文件个数限制(单个目录下最大文件数)