Shuimitaojun 2019-06-28
使用df、du并结合sort,可以快速找到系统中的大文件!
磁盘
被占用了多少空间,目前还剩下多少空间等信息。目录(或文件)
所占磁盘空间的大小。是不是感觉字面看起来没啥区别呀?哈哈,实际有很多不同哦
(1)统计的范围不同
df 是从总体上统计系统各磁盘的占用情况,不能统计具体的文件夹或文件的大小。 du 既可以从总体上统计,又可以统计具体的某个文件夹或文件的大小。
(2)计算方式不同,计算速度不同
df 通过文件系统来快速获取空间大小的信息,速度快,效率高 du 通过逐级进入指定目录的每一个子目录,逐个计算每个文件大小并相加,最终显示出来。 所以计算速度慢,当文件目录较多文件较大时要等很久很久!! 而且因为要进入每个子目录计算文件大小,如果当前用户对某些文件/夹没有访问权限时,无法进行计算。
(3)计算结果的差异
df 可以获取已经删除的文件。 由于df是通过文件系统来获取空间大小的,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了, 当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件。 所以当一个文件刚删除清空没完全释放时,df 仍会把它计算在内。 (当你删除一个大文件前后可以分别用df 命令查看一下,刚删除时还在占用磁盘空间) du 只能看到当前存在的、没有被删除的文件。 他计算的大小就是当前他认为存在的所有文件大小的累加和。 当文件系统也确定删除了该文件后,这时候du与df 的结果就一致了。 所以在这一点上,可以说du 计算更精确,也可以说df 计算有延迟,根据个人情况使用就行。
(-h参数使结果以K,M,G为单位,提高信息的可读性)
[app@VM_18_18_centos jjingli]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 20G 15G 4.3G 78% / /dev/vdb 118G 100G 13G 89% /data
默认显示系统所有的磁盘情况,此图中显示当前一共有两个硬盘分区,及各自的占用情况。
该命令可以指定显示某个分区的占用情况,用的比较少
当使用 df -h
命令看到磁盘占用较高时,需要使用 du
命令进一步查看哪些文件较大,进而删除。
(-h 参数同样是为了提高可读性,-s 代表summary,只显示总大小)
[app@VM_18_18_centos jjingli]$ du -sh 6.4G
默认显示当前目录下所有文件和文件夹的总大小。
当目录下文件夹特别多时,记得不要去掉-s参数,不然会把所有文件夹下的所有文件分别列出来。
du -sh 在不指定目录的情况下,默认会显示当前目录下的所有子目录的总大小。
du -sh 目录名
在指定目录的情况下,会显示指定目录下的所有文件或文件夹的大小。
du -sh * # 显示当前目录下的所有文件和文件夹大小 du -sh / # 显示根目录下所有的文件和文件夹大小 du -sh /data # 显示/data目录下所有的文件和文件夹大小
# 查看/data目录下的所有文件和文件夹大小,并从大到小排序 du -sh /data | sort -nr 这个命令对吗? 不对!因为du -sh展示的结果单位不同,但是sort排序只能针对数字,导致980KB的文件排在1GB文件的前面。 # 查看/data目录下的所有文件和文件夹大小,找出所有GB大小的文件,并从大到小排序 du -sh /data | grep G | sort -nr # 这样就可以达到目的了~, 但是如果文件夹较多的话,还要一个一个的进入去找,怎么解决呢?接着看下面: # 去掉 -s 参数,可以直接查看包括所有文件夹下的所有文件 du -h /data | grep G | sort -nr
如果要想让v2也进行排序,需要把k2和v2组装成新的类,作为k2,才能参与比较。// 1.1 告诉干活的人 输入流位置 读取hdfs中的文件。每一行解析成一个<k,v>。每一个键值对调用一次map函数