记一次磁盘容量报警的排查心得。java
收到磁盘报警提示某个目录下已占用85%的存储空间,对于开发来讲这个时候就会要去看下具体是些什么文件占用了磁盘空间,在排查的过程当中用到的相关命令记录在此。spa
一、文件系统空间使用状况code
df -h
查看全部的文件系统空间使用状况。xml
二、肯定是目录下哪些文件占用的空间比较多find /data -type f -size +800M -print0 | xargs -0 ls -lh
查看占用空间大于800M的文件列表。排序
xargs从stdin读入数据,而|
管道操做符是将前一个命令的输出做为后一个命令的输入。ip
echo "--help" | cat echo "--help"| xargs cat
经过这两个命令就能看出xargs和管道操做命令的区别了。开发
这里须要说明下-print0和xargs -0这两个参数:文档
默认状况下-print会对每一个文件进行换行输出,it
xargs默认会将空白符、换行符转化为空白符,因此上面的"file 1.xml"就会被解析成为file、1.xml两个文件了。class
而为了不这种问题就提供了自定'\0'来替换find命令的默认换行符,xargs在解析的时候一样经过'\0'来进行反解析因此就能获得正常的输出
固然在进行大文件查找的时候可能会有很是多的文件,而须要结合sort head
等命令来进行排序.
这里用到了du(disk usage)其实最主要是利用他的-m参数来使文件大小更易读的方式进行排序(单位为1M)。
三、du
上面提到du
这个命令,其实主要是查看文件夹占用的容量大小,加上-a参数也能查看文件占用的容量。具体能够在使用的过程当中查看帮助文档。
四、代码行数统计
咱们常常会好奇写了多少行的代码,这时find xargs
命令就派上用场了find . -type f -name "*.xml" -print0 | xargs -0 wc -l | awk -F " " '{sum+=$0};END {print sum}'
"file 1.xml"文件中有5行数据
用上面命令统计结果。将*.xml
换成*.java
不就统计出来java代码的行数了嘛。