在linux下,使用df -h
命令查看磁盘空间使用量,显示已使用了100%,而实际用到的远没有那么多。
root@iZ94yakhyenZ:/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 20G 0 100% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 990M 4.0K 990M 1% /dev
tmpfs 201M 384K 200M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1001M 0 1001M 0% /run/shm
none 100M 0 100M 0% /run/user
用du -h
查看,根目录下的用量为6.8G。
root@iZ94yakhyenZ:/# du --max-depth=1 -h
4.0K ./opt
9.6M ./bin
384K ./run
4.0K ./srv
4.0K ./lib64
0 ./sys
8.5M ./sbin
34M ./boot
4.0K ./home
4.0K ./dev
du: cannot access './proc/12212/task/12212/fd/4': No such file or directory
du: cannot access './proc/12212/task/12212/fdinfo/4': No such file or directory
du: cannot access './proc/12212/fd/4': No such file or directory
du: cannot access './proc/12212/fdinfo/4': No such file or directory
0 ./proc
283M ./lib
24K ./tmp
28K ./root
4.0K ./media
2.1G ./mnt
803M ./usr
16K ./lost+found
3.7G ./var
4.7M ./etc
6.8G .
系统为ubuntu14.04,是运行在阿里云上的虚拟机。
是什么原因导致这种现象呢?
linux的一个特性,如果把一个正在被运行中的程序打开的文件删除,虽然看起来文件已经不在了,但仍然占用磁盘空间。
可以通过执行
lsof|grep delete
看到所有被打开但有被删除的文件列表,找找看哪个是日志文件。通常是apache或者nginx的日志,这个时候需要重启下apache或者nginx就可以了。
你删掉了正在使用中的日志。。。
所以,找到对应的进程然后重启下。