Linux删除文件磁盘空间不释放及常见问题的解决思路
问题来源
朋友通过Discuz搭建了一个pixel的手机社区论坛,并运营了几年,目前Alexa全球排名10000以内。
但是前几天突然不能访问了,苦于没有技术人员,不知和解,向本人求救。
第一步:ping主机
可以ping通,至少说明网络是OK的
ping示例:
root@vps:~# ping www.xtuz.net
PING www.xtuz.net (104.200.67.118) 56(84) bytes of data.
64 bytes from vps.server.com (104.200.67.118): icmp_seq=1 ttl=64 time=0.040 ms
64 bytes from vps.server.com (104.200.67.118): icmp_seq=2 ttl=64 time=0.030 ms
64 bytes from vps.server.com (104.200.67.118): icmp_seq=3 ttl=64 time=0.027 ms
64 bytes from vps.server.com (104.200.67.118): icmp_seq=4 ttl=64 time=0.031 ms
64 bytes from vps.server.com (104.200.67.118): icmp_seq=5 ttl=64 time=0.026 ms
64 bytes from vps.server.com (104.200.67.118): icmp_seq=6 ttl=64 time=0.029 ms
第二步:查看ssh是否可以正常登录主机
通过Putty远程登录到服务器,如果可以正常登录,至少证明机器还是可以响应的。如果机器负载很高的话,连登录都不行。
第三步:查看负载情况
登录主机后通过uptime
查看了机器的负载情况,还好,不是很高。
uptime的输出信息包括:
- 系统现在的时间
- 系统从上次开机到现在运行了多长时间
- 系统目前有多少登陆用户
- 系统在1分钟内、5分钟内、15分钟内的平均负载
uptime示例:
root@vps:~# uptime
03:28:39 up 30 days, 18:19, 1 user, load average: 0.16, 0.06, 0.04
第四步:查看内存使用情况
通过free
命令查看机器的内存情况,如果都有剩余则没问题
示例:
root@vps:~# free -m
total used free shared buff/cache available
Mem: 512 118 249 32 144 301
Swap: 1024 28 995
其中参数说明如下:
参数 | 说明 |
---|---|
total | 内存总数,物理内存总数 |
used | 已经使用的内存数 |
free | 空闲的内存数 |
shared | 多个进程共享的内存总额 |
buff/cache | 缓存 |
available | 可以被应用程序使用的内存 |
基本说明:
- total = buff/cache + free + used
- available = free + buffer/cache 这只是一个很理想的计算方式,实际中的数据往往有较大的误差
注意:
- free 是真正尚未被使用的物理内存数量
- available 是从应用程序的角度看到的可用内存数量, 如果应用程序内存不够了,内核就会从从buffer/cache回收内存来满足应用程序
第五步:查看硬盘使用情况
通过df
命令查看硬盘被占用了多少空间,目前还剩下多少空间等信息
示例如下:
root@vps:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 414M 0 414M 0% /dev
tmpfs 87M 9.4M 78M 11% /run
/dev/vda1 50G 4.7G 43G 10% /
tmpfs 433M 13M 420M 3% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 433M 0 433M 0% /sys/fs/cgroup
tmpfs 87M 0 87M 0% /run/user/500
朋友的网站服务器就是这出了问题,磁盘使用已经100%,没有多余的空间可用了。
然后看看通过du -s -h *
可以看看哪个目录下的文件占用较多,最后定位到Nginx的log文件有100多G,直接rm -rf access.log
删掉吧。
但是这时候磁盘空间并没有释放,这是由于Nginx进程占用该文件的原因。
可以通过lsof access.log |grep deleted
来验证。
lsof
是一个列出当前系统打开文件的工具,可以用来查找删除的文件是被哪个进程在占用,然后做相应的处理,如将进程重启或者关闭。
这时处理起来比较简单了,直接重启一下Nginx。OK,硬盘可用空间增加,网站服务正常。
展开剩余53%