服务器开发环境作为公共环境,经常会遇到磁盘空间爆满的情况(不知道您有没有遇到过,反正我经常遇到这个情况)。由于我们好多开发同学都在上面放文件,遇到这种情况就只能先删除自己的没用的文件了。但是,之前曾经遇到一个情况,我删除了之前存储的10个G文件,释放空间不到两分钟,磁盘空间又满了!!!
所以说,掌握服务器磁盘空间查看命令是非常重要滴,不然你怎么找出是什么问题导致磁盘空间增速这么快呢,废话少说,接下俩咱们看看如何精确使用du这个命令,让我们在平常开发中少走弯路。
说一下,以下命令都是centos7.6环境下的root用户执行的结果。
显示目录的磁盘使用率摘要
[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'命令将列出给定目录或当前工作目录中的所有文件和文件夹。此外,它还将沿着它们的路径以块的形式显示,在页面的底部,它将以块的形式显示总文件大小。正如您在上面的示例中看到的,文件路径和现有文件的块大小一起显示。但是,上面的输出不是可读的格式,这是它的主要缺点。
以可读的形式显示目录的磁盘使用率摘要
[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的形式打印。
查看特定目录的总磁盘使用情况
[root@hadoop3 /]# du -sh /tmp 300K /tmp
命令详解:'du -sh'选项将显示目录的确切使用大小。'-s'标志将显示包含块大小的目录总数,但'-h'标志的组合将把输出转换为可读的格式。该命令在实际中使用最为频繁。
列出该目录下所有文件/子文件的磁盘使用情况
[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',那么所有的输出都是人类可读的格式。
列出文件总的磁盘占用空间
[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',那么所有的输出都是可读的格式。
以指定容量单位输出文件/文件夹磁盘占用大小
[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会导致文件四舍五入容量。
检查当前位置的所有子目录的大小
[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深度的子目录的磁盘容量大小。
在计算磁盘大小时排除特定类型的文件
[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等扩展名)。
查看上次修改时间的磁盘使用情况
[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'选项,它将列出最后修改的文件和目录的日期和时间。