生产中常用的du命令
1. 介绍
du是用来查看文件或目录所占用磁盘空间的大小
du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>]
[--max-depth=<目录层数>][--help][--version][目录或文件]
常用参数
参数 | 说明 |
---|---|
-a -all | 为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。 |
-b -bytes | 显示目录或文件大小时,以byte为单位。 |
-c –total | 除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。 |
-D –dereference-args | 显示指定符号连接的源文件大小。 |
-h –human-readable | 以K,M,G为单位,提高信息的可读性。 |
-H –si | 与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。 |
-k –kilobytes | 以1024 bytes为单位。 |
-l –count-links | 重复计算硬件连接的文件。 |
-L<符号连接> –dereference<符号连接> | 显示选项中所指定符号连接的源文件大小。 |
-m –megabytes | 以1MB为单位。 |
-s –summarize | 仅显示总计,即当前目录的大小。 |
-S –separate-dirs | 显示每个目录的大小时,并不含其子目录的大小。 |
-x –one-file-xystem | 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 |
-X<文件> –exclude-from=<文件> | 在<文件>指定目录或文件。 |
--exclude=<目录或文件> | 略过指定的目录或文件。 |
--max-depth=<目录层数> | 超过指定层数的目录后,予以忽略。 |
--help | 显示帮助。 |
--version | 显示版本信息。 |
2. 示例:
2.1 -a and -s
# -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
# -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
[root@centos /data]#du -ah /data/
10M /data/testfile
20M /data/time.log
5.0M /data/file.txt
35M /data/
[root@centos /data]#du -sh /data/ # 查看当前目录总共占的容量。而不单独列出各子项占用的容量
35M /data/
[root@centos /data]#du -ch /data/
35M /data/
35M total
[root@centos /data]#
2.2 列出 /data 目录中不包括 log 文件的目录的大小
[root@centos /data]#tree /data/
/data/
|-- file.txt
|-- testfile
`-- time.log
0 directories, 3 files
[root@centos /data]#du -ah /data/
10M /data/testfile
20M /data/time.log
5.0M /data/file.txt
35M /data/
[root@centos /data]#du -sh /data/ --exclude="*.log"
15M /data/
[root@centos /data]#
2.3 计算所有 log 的大小和总和
[root@centos /data]#find /data/ -type f -name "*.log"|xargs du -ch
20M /data/time.log
30M /data/time1.log
26M /data/time2.log
76M total
[root@centos /data]#
[root@centos /data]#ls /data/*.log|xargs du -ch
20M /data/time.log
30M /data/time1.log
26M /data/time2.log
76M total
[root@centos /data]#
2.4 想在一个屏幕下列出更多的关于 /data 目录及子目录大小的信息:
# -0(零)表示每列出一个目录的信息,不换行,而是直接输出下一个目录的信息。
[root@centos /data]#du -0h /data/
91M /data/[root@centos /data]#
2.5 --max-depth=n 表示只深入到第 n 层目录,此处设置为 0,即表示不深入到子目录。
[root@centos /data/logs]#du -h --max-depth=0 /data/
143M /data/
# 显示 /data/ 机器下面子目录的大小
[root@centos /data/logs]#du -h --max-depth=1 /data/ # 查看当前目录下一级子文件和子目录占用的磁盘容量。
128M /data/logs
143M /data/
[root@centos /data/logs]#