du命令用的好,磁盘空间全知了


服务器开发环境作为公共环境,经常会遇到磁盘空间爆满的情况(不知道您有没有遇到过,反正我经常遇到这个情况)。由于我们好多开发同学都在上面放文件,遇到这种情况就只能先删除自己的没用的文件了。但是,之前曾经遇到一个情况,我删除了之前存储的10个G文件,释放空间不到两分钟,磁盘空间又满了!!!

所以说,掌握服务器磁盘空间查看命令是非常重要滴,不然你怎么找出是什么问题导致磁盘空间增速这么快呢,废话少说,接下俩咱们看看如何精确使用du这个命令,让我们在平常开发中少走弯路。

说一下,以下命令都是centos7.6环境下的root用户执行的结果。

du

显示目录的磁盘使用率摘要

[root@hadoop3 /]# du /tmp
4       /tmp/.font-unix
4       /tmp/.ICE-unix
4       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
8       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4       /tmp/.XIM-unix
260     /tmp/hsperfdata_root
4       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
8       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4       /tmp/.Test-unix
4       /tmp/.X11-unix
300     /tmp

命令详解:不带任何选项的'du'命令将列出给定目录或当前工作目录中的所有文件和文件夹。此外,它还将沿着它们的路径以块的形式显示,在页面的底部,它将以块的形式显示总文件大小。正如您在上面的示例中看到的,文件路径和现有文件的块大小一起显示。但是,上面的输出不是可读的格式,这是它的主要缺点。

du -h

以可读的形式显示目录的磁盘使用率摘要

[root@hadoop3 /]# du -h /tmp
4.0K    /tmp/.font-unix
4.0K    /tmp/.ICE-unix
4.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4.0K    /tmp/.XIM-unix
260K    /tmp/hsperfdata_root
4.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4.0K    /tmp/.Test-unix
4.0K    /tmp/.X11-unix
300K    /tmp

命令详解:使用'du -h'选项将以"可读格式"列出所有输出。这个'-h'选项将块大小转换为可读的格式,如Bytes、Kilobytes、Megabytes或Gigabytes。在上面的例子中,您可以看到所有文件大小的输出K的形式打印。

du -sh

查看特定目录的总磁盘使用情况

[root@hadoop3 /]# du -sh /tmp
300K    /tmp

命令详解:'du -sh'选项将显示目录的确切使用大小。'-s'标志将显示包含块大小的目录总数,但'-h'标志的组合将把输出转换为可读的格式。该命令在实际中使用最为频繁。

du -a

列出该目录下所有文件/子文件的磁盘使用情况

[root@hadoop3 /]# du -a /tmp
4       /tmp/.font-unix
4       /tmp/.ICE-unix
4       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
8       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4       /tmp/.XIM-unix
32      /tmp/hsperfdata_root/5057
32      /tmp/hsperfdata_root/3645
32      /tmp/hsperfdata_root/963
32      /tmp/hsperfdata_root/4034
32      /tmp/hsperfdata_root/11619
32      /tmp/hsperfdata_root/18122
32      /tmp/hsperfdata_root/12567
32      /tmp/hsperfdata_root/3820
260     /tmp/hsperfdata_root
4       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
8       /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4       /tmp/.Test-unix
0       /tmp/wrapper-680-1-in
4       /tmp/.X11-unix
0       /tmp/wrapper-680-1-out
300     /tmp

命令详解:使用'-a'选项,可以列出并打印每个文件的磁盘使用情况,包括目录和子目录。该命令可以识别给定路径下最大的文件/文件夹,并帮助您删除/清除未使用的或最大的文件,以便为服务器提供足够的空闲空间。在上面的示例中,可以看到与前面示例的不同之处,这里列出了包括目录在内的每个文件。如果你在上面的命令中加上'-h'标志,比如'du -ah',那么所有的输出都是人类可读的格式。

du -c

列出文件总的磁盘占用空间

[root@hadoop3 /]# du -ch /tmp
4.0K    /tmp/.font-unix
4.0K    /tmp/.ICE-unix
4.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4.0K    /tmp/.XIM-unix
260K    /tmp/hsperfdata_root
4.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4.0K    /tmp/.Test-unix
4.0K    /tmp/.X11-unix
300K    /tmp
300K    total

命令详解:使用'-c'选项将在输出的最底部列出总的使用磁盘空间。如果你在上面的命令中加上'-h'标志,比如'du -ch',那么所有的输出都是可读的格式。

du -BK/-BM/-BG

以指定容量单位输出文件/文件夹磁盘占用大小

[root@hadoop3 /]# du -BK /tmp
4K      /tmp/.font-unix
4K      /tmp/.ICE-unix
4K      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
8K      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4K      /tmp/.XIM-unix
260K    /tmp/hsperfdata_root
4K      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
8K      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4K      /tmp/.Test-unix
4K      /tmp/.X11-unix
300K    /tmp
[root@hadoop3 /]# du -BM /tmp
1M      /tmp/.font-unix
1M      /tmp/.ICE-unix
1M      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
1M      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
1M      /tmp/.XIM-unix
1M      /tmp/hsperfdata_root
1M      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
1M      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
1M      /tmp/.Test-unix
1M      /tmp/.X11-unix
1M      /tmp
[root@hadoop3 /]# du -BG /tmp
1G      /tmp/.font-unix
1G      /tmp/.ICE-unix
1G      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
1G      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
1G      /tmp/.XIM-unix
1G      /tmp/hsperfdata_root
1G      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
1G      /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
1G      /tmp/.Test-unix
1G      /tmp/.X11-unix
1G      /tmp

命令详解:将'-B'标记与'K'、'M'或'G'结合使用,可以将文件和目录的总磁盘使用情况分为千字节(Kilobytes)、兆字节(Megabytes)或千兆字节(Gigabytes)。但是请注意,在使用的时候请合理使用容量单位,不然就会出现上述情况,实际没有1M,用-BM会导致文件四舍五入容量。

du —max-depth=x

检查当前位置的所有子目录的大小

[root@hadoop3 /]# du -h --max-depth=1 /tmp
4.0K    /tmp/.font-unix
4.0K    /tmp/.ICE-unix
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4.0K    /tmp/.XIM-unix
260K    /tmp/hsperfdata_root
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4.0K    /tmp/.Test-unix
4.0K    /tmp/.X11-unix
300K    /tmp

命令详解:添加'—max-depth=x'参数,可以检查当前目录下x深度的子目录的磁盘容量大小。

du —exclude="xxx"

在计算磁盘大小时排除特定类型的文件

[root@hadoop3 /]# du -h --exclude="*.font-unix" /tmp
4.0K    /tmp/.ICE-unix
4.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4.0K    /tmp/.XIM-unix
260K    /tmp/hsperfdata_root
4.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
8.0K    /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4.0K    /tmp/.Test-unix
4.0K    /tmp/.X11-unix
296K    /tmp

命令详解:在'du'命令中使用'-exclude'选项,在计算所有文件和目录的磁盘使用情况时,我们可以删除一些特定的模式(如php、txt、png等扩展名)。

du —time

查看上次修改时间的磁盘使用情况

[root@hadoop3 /]# du -ha --time /tmp
4.0K    2021-02-26 12:19        /tmp/.font-unix
4.0K    2021-02-26 12:19        /tmp/.ICE-unix
4.0K    2021-11-20 23:29        /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ/tmp
8.0K    2021-11-20 23:29        /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-nginx.service-pt0CTJ
4.0K    2021-02-26 12:19        /tmp/.XIM-unix
32K     2021-12-06 00:17        /tmp/hsperfdata_root/5057
32K     2021-12-06 00:18        /tmp/hsperfdata_root/3645
32K     2021-12-06 00:17        /tmp/hsperfdata_root/963
32K     2021-12-06 00:18        /tmp/hsperfdata_root/4034
32K     2021-12-06 00:18        /tmp/hsperfdata_root/11619
32K     2021-12-06 00:18        /tmp/hsperfdata_root/18122
32K     2021-12-06 00:18        /tmp/hsperfdata_root/12567
32K     2021-12-06 00:18        /tmp/hsperfdata_root/3820
260K    2021-12-06 00:18        /tmp/hsperfdata_root
4.0K    2021-11-20 18:18        /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD/tmp
8.0K    2021-11-20 18:18        /tmp/systemd-private-31de4ddb230847ecb9b7d67391665ec2-chronyd.service-rVhZDD
4.0K    2021-02-26 12:19        /tmp/.Test-unix
0       2021-12-06 00:18        /tmp/wrapper-680-1-in
4.0K    2021-02-26 12:19        /tmp/.X11-unix
0       2021-12-06 00:18        /tmp/wrapper-680-1-out
300K    2021-12-06 00:18        /tmp

:在'du'命令中使用' time'选项,它将列出最后修改的文件和目录的日期和时间。