文章背景:
平时工作中常常遇到,Linux的服务器文件看起来磁盘占用率都不高,但是磁盘使用率已经100%;所以我就写了这篇文章
一、前言
在linux运维中,经常会遇到磁盘爆满的情况,但通过du -sh * 发现文件占用不大,这个时候就需要查看隐藏的文件是否占用了较大空间。
du -sh *
二、查看隐藏文件大小
1、查看隐藏的文件大小方法:
du -sh .[!.]*
# du命令用来看文件size,比如du -csh * 显示非隐藏文件大小,并统计文件占用总的空间大小
.[!.]* 是正则式, 意思是第一位是点, 第二位是除了点以外的任何字符, 第三位是任意字符或者不存在
后面可以再加一个" *"来包括非隐藏文件,也就是:du -sh .[!.]* *
2、接下来还可以接 sort -h来对占用空间进行排序(sort 的 -k2 可以指明根据第二列来排序)
下面这条命令就是显示所有隐藏文件和非隐藏文件的大小并根据占用空间排序的语句
du -sh .[!.]* * |sort -hr
# 其中r表示文件大小从大到小排序输出
echo .[!.]*# 可以看所有隐藏文件df -h# 可以看磁盘使用情况-
三、清理磁盘爆满
思路:
对于 Linux 磁盘满的问题,我们通常的处理思路是用 du 查找可清理的大文件,然后临时删掉让磁盘使用率先降下来,从而尽快保证磁盘能继续写入
1)、du 和 df 查看磁盘使用率不一致,du查看的使用率小于df 查看到的使用率
原因:个人初步判断是有一些已删除的文件,还被一些进程 hold 住句柄没释放,导致这些文件虽然已经删除,也的确看不到了,但是却还占着磁盘空间
处理建议:
a.通过执行 lsof | grep deleted 可以找到那些没有释放磁盘空间文件的进程
b.然后通过重启对应进程,就可以达到释放已删除文件占用的空间的目的
2)、用 rm -rf 清理隐藏文件(自己判断那些文件是不需要,可删除的)
四、备注
1、lsof(List Open Files) 用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件。是一个特别方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行
lsof命令详解,可参考以下两篇文章
https://www.cnblogs.com/muchengnanfeng/p/9554993.html
https://blog.csdn.net/Alen_xiaoxin/article/details/105185076
2、ps 、netstat和lost的区别
1)、ps :(process)查看有终端控制的所有进程ps -ef | grep word 查看包含关键字word的所有外部进程(包括其他用户)ps -ax 使用 -a 参数。-a 代表 all。同时加上x参数会显示没有控制终端的进程2)、netstat:用于显示各种网络相关信息,如网络连接,路由表,接口状态3)、losf:(列出打开文件lists openfiles)能看到pid和用户(有权限控制,只能看到本用户),可以找到哪个进程占用了这个端口




