一次服务器某个目录下文件过多的处理
简介一次服务器某个目录下文件过多的处理
登录服务器,输入任何命令,然后使用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