du命令用法举例

du命令是用来查看使用空间的,但是它与df命令有着本质的不同。

我在这里从原理上来分析两者的区别:
du的工作原理:
1.du命令会对待统计文件逐个调用fstat这个系统调用,获取文件大小。
2.它的数据是基于文件获取的,可以跨越多个分区操作。
3.如果针对的目录中文件很多,du速度就会很慢了。

df的工作原理:
1.df命令使用的是statfs这个系统调用,直接读取分区的超级块信息获取分区使用情况。
2.它的数据是基于分区元数据的,所以只能针对整个分区。
3.由于df直接读取超级块,所以运行速度不受文件多少影响。

1.命令格式:du [选项][文件]

2.命令功能:显示每个文件和目录的磁盘使用空间。

3.命令参数:
-a或-all  显示目录中个别文件的大小。   
-b或-bytes  显示目录或文件大小时,以byte为单位。   
-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 
-k或--kilobytes  以KB(1024bytes)为单位输出。
-m或--megabytes  以MB为单位输出。   
-s或--summarize  仅显示总计,只列出最后加总的值。
-h或--human-readable  以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。   
-S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。 
-X<文件>或--exclude-from=<文件>  在<文件>指定目录或文件。   
--exclude=<目录或文件>         略过指定的目录或文件。    
-D或--dereference-args   显示指定符号链接的源文件大小。   
-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。   
-l或--count-links   重复计算硬件链接的文件。  

4.使用实例:
4.1 显示目录或者文件所占空间,命令:du
[hadoopuser@CNSZ443239 ~]$ du
4       ./test4
12      ./.oracle_jre_usage
4       ./.mozilla/plugins
4       ./.mozilla/extensions
12      ./.mozilla
8       ./.ssh
8       ./.vim
4       ./777
8       ./perl/dmfm
12      ./perl
4       ./.gnome2
40      ./.beeline
224     ./test
28      ./dmfm
524     .

说明:只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的524为当前目录的总大小

4.2 显示指定文件所占空间,命令:du 文件名称
[hadoopuser@CNSZ443239 ~]$ du dual.txt 
4       dual.txt

4.3 查看指定目录的所占空间,命令:du 目录名称
[hadoopuser@CNSZ443239 ~]$ du test4
4       test4

4.4 显示多个文件所占空间,命令:du 文件名称1  文件名称2....
[hadoopuser@CNSZ443239 ~]$ du test1.txt test2.txt test3.txt
1       test2.txt
2       test2.txt
3       test3.txt

[hadoopuser@CNSZ443239 ~]$ du test*
1       test2.txt
2       test2.txt
3       test3.txt

4.5 只显示总和的大小,命令:du -s
[hadoopuser@CNSZ443239 ~]$ du -s
524     .
[hadoopuser@CNSZ443239 ~]$ du -s test*
224     test
1       test2.txt
2       test2.txt
3       test3.txt

4.6 方便阅读的格式显示,命令:du -h 文件名称|目录名称
[hadoopuser@CNSZ443239 ~]$ du -h test4
4.0K    test4
[hadoopuser@CNSZ443239 ~]$ du -h test*
1.0K        test2.txt
2.0K        test2.txt
3.0K        test3.txt

4.7 文件和目录都显示,命令:du -ah 文件名称|目录名称
[hadoopuser@CNSZ443239 ~]$ du -ah test
4.0K    test/F_CUST_MODE_SCF.txt
4.0K    test/F_TRAD_BUSINESS_JYMX_SCF.txt
4.0K    test/F_CUST_SCF_CUST_INFO_ALL.txt
8.0K    test/F_TRAD_BUSINESS_BL_SCF.txt
4.0K    test/F_CUST_BUSINESS_KPL_SCF.txt
4.0K    test/F_CUST_SJYH_EMBANK.txt
8.0K    test/F_ATT_SCF_CREDIT_INFO.txt
4.0K    test/F_ACCT_CZHISMX_SCF.txt
64K     test/test_20160721.txt
76K     test/test_20160722.txt
8.0K    test/F_CUST_INFO_NSCF.txt
12K     test/F_TRAD_SCF_AR_ORIG_INFO.txt
4.0K    test/F_TRAD_SCF_AR_ORIG_DETIAL.txt
4.0K    test/test2.txt
4.0K    test/INT_RIDM_SS_TEST_20160921_02.txt
4.0K    test/F_CUST_JYSC_SCF.txt
4.0K    test/F_CUST_BUSINESS_KPL_NSCF.txt
224K    test

4.8 显示几个文件或目录各自占用磁盘空间的大小和总和,命令:du -c 文件名称1 文件名称2...
[hadoopuser@CNSZ443239 ~]$ du -c test2.txt test3.txt
4       test2.txt
4       test3.txt
8       总用量

说明:加上-c选项后,du不仅显示两个目录各自占用磁盘空间的大小,还在最后一行统计它们的总和。

4.9 按照空间大小排序,命令:du|sort -nr|more
[hadoopuser@CNSZ443239 ~]$ du|sort -nr
524     .
224     ./test
40      ./.beeline
28      ./dmfm
12      ./perl
12      ./.oracle_jre_usage
12      ./.mozilla
8       ./.vim
8       ./.ssh
8       ./perl/dmfm
4       ./test4
4       ./.mozilla/plugins
4       ./.mozilla/extensions
4       ./.gnome2
4       ./777
[hadoopuser@CNSZ443239 ~]$ du | sort -nr | more
524     .
224     ./test
40      ./.beeline
28      ./dmfm
12      ./perl
12      ./.oracle_jre_usage
12      ./.mozilla
8       ./.vim
8       ./.ssh
8       ./perl/dmfm
4       ./test4
4       ./.mozilla/plugins
4       ./.mozilla/extensions
4       ./.gnome2
4       ./777

4.10 输出当前目录下各个子目录所使用的空间,命令:u -h  --max-depth=1
[hadoopuser@CNSZ443239 ~]$ du -h  --max-depth=1
4.0K    ./test4
12K     ./.oracle_jre_usage
12K     ./.mozilla
8.0K    ./.ssh
8.0K    ./.vim
4.0K    ./777
12K     ./perl
4.0K    ./.gnome2
40K     ./.beeline
224K    ./test
28K     ./dmfm
524K    .

猜你喜欢

转载自blog.csdn.net/qq646748739/article/details/81187816