LINUX的du命令详解

来源:百度文库 编辑:神马文学网 时间:2024/04/29 06:43:11
命令用途
   du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
命令格式
      du [OPTION]... [FILE]...    
       -a, --all
              包括了所有的文件,而不只是目录
       --apparent-size
              print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due
              to holes in ('sparse') files, internal fragmentation, indirect blocks, and the like
       -B, --block-size=SIZE use SIZE-byte blocks
       -b, --bytes 以字节为计算单位
       -k             以千字节(KB)为计算单位
       -m            以兆字节(M)为计算单位
       -c, --total 最后加上一个总计(系统缺省)             
       -D, --dereference-args
              dereference FILEs that are symbolic links
       -H    跟 - -si效果一样。
       -h, --human-readable   以比较阅读的方式输出文件大小信息 (例如,1K 234M 2G)。注:该选项在很多其他命令(df, ls)中也有效。
       --si   跟-h 效果一样,只是以1000为换算单位
       -l, --count-links 计算所有的文件大小,对硬链接文件,则计算多次。
       -L, --dereference 显示选项中所指定符号连接的源文件大小。           
       -P, --no-dereference 不跟随任何的符号连接(缺省)
       -S, --separate-dirs 计算目录所占空间时不包括子目录的大小。           
       -s, --summarize      只显示工作目录所占总空间
       -x, --one-file-system 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。            
       -X FILE, --exclude-from=FILE 排除掉指定的FILE             
       --exclude=PATTERN 排除掉符合样式的文件,Pattern就是普通的Shell样式,?表示任何一个字符,*表示任意多个字符。
       --max-depth=N
             只列出深度小于max-depth的目录和文件的信息 --max-depth=0 的时候效果跟--s是 一样
使用案例
[weijun.hu@test0-32-227]$ pwd
[weijun.hu@test0-32-227] /home/weijun.hu/demo
[weijun.hu@test0-32-227]$ ll
drwxrwxr-x 4 weijun.hu weijun.hu     4096 Apr 21 16:00 auto-conf
drwxrwxr-x 3 weijun.hu weijun.hu     4096 May 19 16:24 bin
drwxrwxr-x 3 weijun.hu weijun.hu     4096 Apr 21 15:59 build
-rwxrwxr-x 1 weijun.hu weijun.hu     2202 Apr 21 15:27 build.xml
drwxrwxr-x 5 weijun.hu weijun.hu     4096 Apr 21 15:59 classes
drwxrwxr-x 8 weijun.hu weijun.hu     4096 May 19 16:31 conf
drwxrwxr-x 4 weijun.hu weijun.hu     4096 Apr 21 15:25 htdocs
drwxrwxr-x 5 weijun.hu weijun.hu     4096 Apr 21 15:23 java
drwxrwxr-x 3 weijun.hu weijun.hu     4096 Apr 21 16:07 jboss
drwxrwxr-x 2 weijun.hu weijun.hu     4096 May 18 20:29 jboss-conf
drwxrwxr-x 4 weijun.hu weijun.hu     4096 Apr 21 15:26 lib
drwxrwxr-x 3 weijun.hu weijun.hu     4096 May 19 19:27 logs
drwxrwxr-x 6 weijun.hu weijun.hu     4096 Apr 21 16:45 mail_group
drwxrwxr-x 3 weijun.hu weijun.hu     4096 Apr 21 15:30 project
drwxrwxr-x 9 weijun.hu weijun.hu     4096 Apr 21 15:23 sql
drwxrwxr-x 3 weijun.hu weijun.hu     4096 Apr 21 16:30 synclogs
drwxrwxr-x 4 weijun.hu weijun.hu     4096 Apr 21 15:27 templates

[weijun.hu@test0-32-227]$ du -s
793832 .--不指定FILE名字计算出当前目录所占用的空间大小。
[weijun.hu@test0-32-227]$ du -sh
776M    .--不指定FILE名字计算出当前目录所占用的空间大小。-h选项使得输出结果跟容易阅读(跟上例比较)
[weijun.hu@test0-32-227]$ du --max-depth=1 -h
--输出当前目录下各个子目录所使用的空间
83M     ./java
87M     ./build
197M    ./jboss
128M    ./lib
1.1M    ./bin
52K     ./synclogs
4.8M    ./sql
920K    ./conf
52K     ./logs
20K     ./mail_group
56K     ./.svn
144M    ./htdocs
56K     ./jboss-conf
2.7M    ./auto-conf
8.0K    ./.mule
23M     ./classes
43M     ./templates
144K    ./project
776M    .

找出大文件

磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:
du -s /home/* | sort -nr