Linux命令学习-找到大文件的目录

"了解du命令的使用"

Posted by Dunno on July 25, 2016

目录

背景介绍

之前公司线下环境碰到过一个场景,运维通知某台机器磁盘快满了,需要尽快上去清理磁盘。但是我不知道如何快速的找到一些大文件的命令。

参考资料

http://man.linuxde.net/du

du命令介绍

du 预估文件空间使用情况

  • -a,–all 输出所有文件大小,不仅仅是目录
  • -b,–bytes 按照bytes大小输出
  • -c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
  • -k或–kilobytes 以KB(1024bytes)为单位输出。
  • -m或–megabytes 以MB为单位输出。
  • -s或–summarize 仅显示总计,只列出最后加总的值。
  • -h或–human-readable 按照最适合的单位输出,提高信息的可读性,强烈推荐用这个,不需要-b -k -m了。
  • -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 重复计算硬件链接的文件。

例子

  • 查询指定目录或者文件

# du /home/heliang05
20	/home/heliang05/bin
276	/home/heliang05/lib/python/polysh
284	/home/heliang05/lib/python
288	/home/heliang05/lib

  • 按照指定单位输出大小(建议使用-h就行了)

# du -b /home/heliang05
16593	/home/heliang05/bin
204846	/home/heliang05/lib/python/polysh
209287	/home/heliang05/lib/python

du -k /home/heliang05
20	/home/heliang05/bin
276	/home/heliang05/lib/python/polysh
284	/home/heliang05/lib/python

du -m /home/heliang05
1	/home/heliang05/bin
1	/home/heliang05/lib/python/polysh
1	/home/heliang05/lib/python
1	/home/heliang05/lib

du -h /home/heliang05
20K	/home/heliang05/bin
276K	/home/heliang05/lib/python/polysh
284K	/home/heliang05/lib/python

  • 查询指定目录的大小(并不看其子目录)

du -sh /home/heliang05
1.1M	/home/heliang05

  • 查询指定目录的大小(并不看其子目录)

du -sh /home/heliang05
1.1M	/home/heliang05

  • -c 和 -a 和 -s的区别

建立测试数据(先建立一个depth1文件夹,然后在depth1里面建立一个depth的文件,同时在depth1里面简历depth2的文件夹,然后在depth2里面再建立一个depth文件)
mkdir depth1
cd depth1/
echo "depth1" > depth
mkdir depth2
cd depth2/
echo "depth1" > depth

测试不同命令的输出

du -ch depth1/
8.0K	depth1/depth2
16K	depth1/
16K	总用量

du -ah depth1/
4.0K	depth1/depth2/depth
8.0K	depth1/depth2
4.0K	depth1/depth
16K	depth1/

du -sh depth1/
16K	depth1/

结论:
-c 只会输出该目录下所有的文件及目录,不会继续输出子目录大小
-a 会输出当前目录以及子目录大小
-s 只会打出当面目录总和大小

多提一句,删除文件

回到这次背景本身,我通过du命令找到了大文件时,需要删除无用文件,释放空间。 使用rm -rf的时候注意,可能无法释放空间,虽然删除了文件,但是文件还被其他应用使用的话,会导致仍然占用空间。 有一个还不错的方式是采用 > xxfile 来释放空间。