如何使用 du 命令示例
默认情况下,如果我们单独运行 'du' 命令,它将递归列出当前工作目录中每个目录正在使用的空间,以 kb 为单位。
[jack@onitroad /]# pwd / [jack@onitroad /]# du | wc -l 17253
“du”命令示例
- 指定最大深度
如上例所示, du 递归查询其执行位置下面的所有目录。我们可以通过使用 --max-depth 指定我们应该检查的深度来使它更有用,它可以缩短为 -d 选项。通过将其设置为 1,我们将查看 1 个目录深度并显示当前位置内所有目录的使用大小。如果我们将深度指定为 2,我们将看到下一级所有目录的磁盘使用情况,依此类推。
- 指定最大深度
[jack@onitroad test]# du -d 1 5520 ./test1 22080 ./test2 33120 . [jack@onitroad test]# du -d 2 2760 ./test1/test1-sub 5520 ./test1 16560 ./test2/test2-sub 22080 ./test2 33120 .
- 2.查看特定目录
默认情况下,'du' 命令将在当前工作目录的上下文中运行。我们可以简单地将目录指定为命令的参数,而不是更改到我们要调查的目录。
[jack@onitroad /]# pwd / [jack@onitroad /]# du /root/test/test1/ 2760 /root/test/test1/test1-sub 5520 /root/test/test1/
- 以人类可读的格式输出
-h 选项将通过转换为例如 KB、MB 或者 GB 来输出人类可读的格式。
[jack@onitroad /]# du -h -d 1 / 118M /boot 0 /dev 0 /proc 8.6M /run 0 /sys 21M /etc 36M /root 140K /tmp 116M /var 860M /usr 0 /home 0 /media 0 /mnt 0 /opt 0 /srv 1.2G /
- 以字节为单位显示磁盘使用情况
我们也可以采用另一种方式,以字节为单位显示数字,而不是使用 -b 选项显示默认 kb 值,这对于监视需要特定值的脚本可能更有用。
[jack@onitroad test]# du -b 2823810 ./test1/test1-sub 5647636 ./test1 16942830 ./test2/test2-sub 22590460 ./test2 96009266 .
- 显示文件的磁盘使用情况
默认情况下,到目前为止,我们已经看到了目录而不是特定文件的磁盘空间使用情况。虽然这确实允许我们检查目录以查看正在使用空间的内容,但我们可以选择使用 -a 选项,该选项也将显示所有文件。
- 显示文件的磁盘使用情况
[jack@onitroad test]# du -h -d 2 -a 2.7M ./test1/test1-sub 2.7M ./test1/1 5.4M ./test1 17M ./test2/test2-sub 2.7M ./test2/7 2.7M ./test2/8 22M ./test2 2.7M ./1 2.7M ./2 33M .
- 报告总磁盘空间
使用 -c 选项,我们可以在输出的底部报告总空间。
- 报告总磁盘空间
[jack@onitroad test]# du -h -d 2 -c 2.7M ./test1/test1-sub 5.4M ./test1 17M ./test2/test2-sub 22M ./test2 33M . 33M total
我们可能最好使用 -s 选项,它只会输出摘要。
[jack@onitroad test]# du -h -s 33M .
- 按磁盘使用大小排序输出
虽然没有内置在 du 命令中,但我们可以将其通过管道传递给 sort 命令,以便按文件大小的顺序列出文件,例如从最小到最大。这非常有用,因为我们可以搜索整个磁盘并根据文件大小对输出进行排序,从而使我们能够快速定位大文件。
- 按磁盘使用大小排序输出
[jack@onitroad test]# du -h -a / | sort -h | tail -n 15 105M /usr/lib/firmware 113M /usr/lib/modules/3.10.0-327.22.2.el7.x86_64/kernel 116M /usr/lib/modules 116M /usr/lib/modules/3.10.0-327.22.2.el7.x86_64 118M /boot 128M /usr/lib64 169M /var/cache/yum 169M /var/cache/yum/x86_64 169M /var/cache/yum/x86_64/7 170M /var/cache 209M /var 265M /usr/share 361M /usr/lib 860M /usr 1.3G
- 显示最后修改时间
在使用磁盘空间搜索可能被删除的文件时,查看上次修改的时间戳可能会有所帮助。例如,如果使用的磁盘空间随着时间的推移而增加,那么最近修改的文件是一个很好的调查位置,例如我们可能有一个不断被修改和写入的大型日志文件。
- 显示最后修改时间
[jack@onitroad log]# du -h -d 1 --time -a 0 2014-08-29 14:18 ./tallylog 24K 2014-08-30 09:22 ./lastlog 4.0K 2014-08-30 09:22 ./btmp 8.0K 2014-08-30 09:22 ./wtmp 0 2014-06-10 16:27 ./ppp 332K 2014-08-30 10:01 ./messages 8.0K 2014-08-30 09:22 ./secure 4.0K 2014-08-30 09:20 ./maillog 0 2014-08-29 14:18 ./spooler 4.0K 2014-08-30 09:20 ./tuned 308K 2014-08-30 10:01 ./audit 1.7M 2014-08-29 14:21 ./anaconda 4.0K 2014-08-30 10:01 ./cron 4.0K 2014-08-30 09:20 ./wpa_supplicant.log 8.0K 2014-08-29 16:23 ./yum.log 0 2014-07-19 01:30 ./httpd 12K 2014-08-30 09:20 ./boot.log 124K 2014-08-29 14:23 ./dmesg.old 124K 2014-08-30 09:20 ./dmesg 2.7M 2014-08-30 10:01 .
虽然最后修改时间是默认的,但我们可以选择分别使用“--time=atime”或者“--time=ctime”指定访问时间和更改时间。
- 只显示大于指定尺寸
我们可以设置阈值以仅显示大于指定数字的结果,而不是显示所有文件和目录的大小。如果我们要搜索大于指定大小的文件,这可能会有所帮助,这对于查找可能占用大部分磁盘空间的大型单个文件很有用。
- 只显示大于指定尺寸
[jack@onitroad test]# du -h -t 100M -a / 118M /boot 116M /var 105M /usr/lib/firmware 102M /usr/lib/locale/locale-archive 102M /usr/lib/locale 113M /usr/lib/modules/3.10.0-327.22.2.el7.x86_64/kernel 116M /usr/lib/modules/3.10.0-327.22.2.el7.x86_64 116M /usr/lib/modules 361M /usr/lib 128M /usr/lib64 265M /usr/share 860M /usr 1.2G /
在此示例中,仅返回大于 100MB 的文件和目录。
- 从搜索中排除模式
使用 --exclude 选项,我们可以选择不显示与搜索结果中指定模式匹配的任何内容。
- 从搜索中排除模式
[jack@onitroad test]# du -h -d 1 -a 5.4M ./test1 22M ./test2 63M ./3.iso 2.7M ./1.txt 2.7M ./2.mp3 96M . [jack@onitroad test]# du -h -d 1 -a --exclude="*.iso" 5.4M ./test1 22M ./test2 2.7M ./1.txt 2.7M ./2.mp3 33M .
在这个例子中,我们可以看到我们的输出中有一个 .iso 文件,但是在排除这个特定的字符串后,它不再显示在输出中。如果我们知道要从结果中排除的某些文件,这将非常有用,因为我们可能不想调查某些已知文件集。
- 列出 inode 使用情况
默认情况下 du 显示块使用情况,但是我们可以改为使用 -inode 选项更改它以显示 inode 使用情况。
- 列出 inode 使用情况
[jack@onitroad test]# du -d 2 --inodes 2 ./test1/test1-sub 4 ./test1 7 ./test2/test2-sub 10 ./test2 18 .
- 删除换行符
默认情况下,du 命令的输出每行显示一个结果,这在我们读取输出时很有帮助,但是如果我们可能正在创建脚本来收集数据并在输出上执行任务,则可能更容易使用不带换行符的数据字符串执行此操作。这就是 -0 选项的用武之地,它将新行字符替换为空字节并将所有内容输出到一行中。
- 删除换行符
[jack@onitroad test]# du -0 2760 ./test1/test1-sub5520 ./test116560 ./test2/test2-sub22080 ./test293788 .[jack@onitroad test]#
- 不要显示来自不同文件系统的内容
默认情况下,du 命令将从指定的位置或者当前工作目录中的其他位置递归搜索。如果我们挂载了其他文件系统,例如挂载到 /mnt 的 NFS 共享,我们可能不想查看这些可能来自不同磁盘或者分区的其他文件系统。这是 -x 选项的用武之地,它将忽略它可能找到的所有其他文件系统。
- 不要显示来自不同文件系统的内容
[jack@onitroad test]# du -d 1 -x / 21400 /etc 97072 /root 140 /tmp 213716 /var 880124 /usr 0 /home 0 /media 0 /mnt 0 /opt 0 /srv 1212456 /
在此示例中,请注意我们在“/”中运行 du,但是缺少许多目录,例如 /boot。这是因为它们运行在不同的文件系统上,而“/”是 /dev/sda2 上的 XFS,/boot 位于 /dev/sda1 磁盘上并运行不同的文件系统。
du 命令是disk usage的缩写,用于找出 Linux 中正在使用磁盘空间。
在 CentOS 中,它是 coreutils 包的一部分。
日期:2020-07-07 20:56:59 来源:oir作者:oir