应用场景:
在我们的日常开发中,我们的服务器总是在不知不觉中磁盘莫名奇妙少了很多空间,或者被占满了,如果这时候要想要存储什么文件,突然发现空间不够了。但我们通常也不知道那些文件占用的空间大,这时候就需要对磁盘占用情况进行管理,删除那些用不上的文件
原因分析
1 自己的服务器本上磁盘空间比较少,然后你的服务上数据和软件比较多,导致磁盘爆满
2 自己的服务器上运行了某些程序,由于长时间运行,产生了大量的日志数据,没有及时删除,因为自己也不知道日志文件存储在那个目录(这个是最常见,最多的情况)
一般我们的磁盘爆满都是第二个原因导致的多,当然对于新手来说可能是二个原因一直导致的,我的服务器爆满主要是第二个原因。所以当服务器爆满我们就需要对服务器的磁盘占用情况进行了解,然后删除垃圾日志文件或者不必要的文件数据
解决步骤(重点)
- 查看当前系统的磁盘占用情况
df -h
使用df命令可以查看当前的系统占用情况,-h选项则时可以人性化的显示空间大小(将字节转化成G,M这种单位),从这里可以看出的的磁盘大小总共是40G,可以还有23G(这23G其实就是我前面删除的日志文件释放的,这也是我写这篇文章的契机)
如果使用df -h发现的磁盘几乎快满了,那么就得查看那些文件占用的空间比较大了
- 返回根目录,并查看该目录下所有目录得占用情况
cd /
- 查看根目录下个个目录的空间查看情况
du -h --max-depth=1 /root
简写:du -hd 1 /root 1代表查看的子目录层数,超过这个层数就不往下递归了
使用命令 du -h --max-depth=1 目标目录 可以查看每个目录的磁盘占用情况,你只要把根目录下的所有目录检验一下,就可以发现你的磁盘主要是被那些文件占用的然后根据需要删除那些不要的文件就好了(核心)
这个命令可以让我们清晰的知道那些目录的占用磁盘大,然后我们在找到对应的目录,看是否要删除数据
删除文件
rm -rf 文件名
- 小细节
对于一些文件一般你删除后,磁盘空间就会被释放,但对于那些被运行服务占用的日志文件,删除后,发现空间并未释放!
原因:在linux系统中,通过rm删除文件将会从文件系统的文件夹结构上解除链接(unlink)然后删除,然而假设文件是被打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用。
解决方案:通过lsof查看是否有已删除文件占用空间
lsof | grep delete
删掉进程kill -9 17947 即可!
到这里,你的磁盘占满情况就解决了!!!!!!!!!!!!