【Linux】使用du、df 和 sort 命令快速找出Linux系统中的大文件

在性能测试中,咱们常常要关注系统磁盘空间,防止因磁盘空间占满而致使的报错,那么具体怎么查看磁盘空间的大小呢?怎么找到占用空间最大的文件呢?

使用df、du并结合sort,能够快速找到系统中的大文件python

1、df 和 du 二者区别

一、df---disk free

  • 能够快速获取 磁盘 被占用了多少空间,目前还剩下多少空间等信息。

二、du---disk usage

  • 显示磁盘空间的使用状况,统计 目录(或文件)所占磁盘空间的大小。

是否是感受字面看起来没啥区别呀?哈哈,实际有不少不一样哦centos

三、df 和 du 的不一样点:

(1)统计的范围不一样app

df 是从整体上统计系统各磁盘的占用状况,不能统计具体的文件夹或文件的大小。

du 既能够从整体上统计,又能够统计具体的某个文件夹或文件的大小。

(2)计算方式不一样,计算速度不一样性能

df 经过文件系统来快速获取空间大小的信息,速度快,效率高

du 经过逐级进入指定目录的每个子目录,逐个计算每一个文件大小并相加,最终显示出来。
因此计算速度慢,当文件目录较多文件较大时要等好久好久!!
并且由于要进入每一个子目录计算文件大小,若是当前用户对某些文件/夹没有访问权限时,没法进行计算。

(3)计算结果的差别测试

df  能够获取已经删除的文件。
因为df是经过文件系统来获取空间大小的,当咱们删除一个文件的时候,这个文件不是立刻就在文件系统当中消失了,而是暂时消失了,
当全部程序都不用时,才会根据OS的规则释放掉已经删除的文件。
因此当一个文件刚删除清空没彻底释放时,df 仍会把它计算在内。
(当你删除一个大文件先后能够分别用df 命令查看一下,刚删除时还在占用磁盘空间)

du 只能看到当前存在的、没有被删除的文件。
他计算的大小就是当前他认为存在的全部文件大小的累加和。


当文件系统也肯定删除了该文件后,这时候du与df 的结果就一致了。
因此在这一点上,能够说du 计算更精确,也能够说df 计算有延迟,根据我的状况使用就行。

2、df 命令

一、df -h

(-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

默认显示系统全部的磁盘状况,此图中显示当前一共有两个硬盘分区,及各自的占用状况。code

二、df -h 分区名

该命令能够指定显示某个分区的占用状况,用的比较少

当使用 df -h 命令看到磁盘占用较高时,须要使用 du 命令进一步查看哪些文件较大,进而删除。排序

3、du 命令

一、du -sh

(-h 参数一样是为了提升可读性,-s 表明summary,只显示总大小)
[app@VM_18_18_centos jjingli]$ du -sh
6.4G

默认显示当前目录下全部文件和文件夹的总大小。class

当目录下文件夹特别多时,记得不要去掉-s参数,否则会把全部文件夹下的全部文件分别列出来。效率

二、du -sh 目录名

du -sh 在不指定目录的状况下,默认会显示当前目录下的全部子目录的总大小。sed

du -sh 目录名 在指定目录的状况下,会显示指定目录下的全部文件或文件夹的大小。

du -sh *  # 显示当前目录下的全部文件和文件夹大小

du -sh /  # 显示根目录下全部的文件和文件夹大小

du -sh /data  # 显示/data目录下全部的文件和文件夹大小

三、du 和 sort 结合对文件排序

# 查看/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
相关文章
相关标签/搜索