实用的linux磁盘大文件查找方法

1. 磁盘管理du命令详解

  • 用途

du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与所有子目录,分别显示各个目录所占的块数,最后才显示工作目录所占总快数。

  • 用法
# du  --help
# du [OPTION]… [FILE]…

-a, --all,包括了所有的文件,而不只是目录

--apparent-size,输出实际大小,而不是磁盘使用量; 虽然尺寸通常较小,可能是由于文件中的空洞,内部空间较大的碎片,间接块等

-b, –bytes,以字节为计算单位,等价于--apparent-size --block-size=1

-k,以千字节(KB)为计算单位,等价于--block-size=1K

-m,以兆字节(MB)为计算单位,等价于--block-size=1M

-c, –total 最后加上一个总计(系统缺省)

-D, –dereference-args,取消引用是符号链接的文件

-H,等价于--dereference-args (-D)

-h, –human-readable,以适合阅读的方式输出文件大小信息 (例如,1K 234M 2G)。注:该选项在很多其他命令(df, ls)中也有效

-l, –count-links 计算所有的文件大小,对硬链接文件,则计算多次

-L, –dereference 显示选项中所指定符号连接的源文件大小

-P, --no-dereference,不跟随任何的符号连接(缺省)

-S, –separate-dirs,计算目录(不包括子目录)所占空间的大小

--si, 像-h一样, 但是使用1000进制,而不是1024进制

-s, --summarize,只显示工作目录所占总空间

-x, --one-file-system,以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。

-X FILE,–-exclude-from=FILE,排除掉指定的文件

--exclude=PATTERN,排除符合样式的文件。Pattern就是普通的Shell样式,?表示任何一个字符,*表示任意多个字符

--max-depth=N,只列出深度小于max-depth的目录和文件的信息。--max-depth=0时,效果跟–s一样

2. 使用案例

  • 查找指定目录的大文件
# cd /home/web/

// 计算当前目录所占用空间的大小
# du -s
793832 

// 计算出当前目录所占用空间的大小。-h选项使得输出结果跟容易阅读(跟上例比较)
# du -sh
776M    

// 输出当前目录下各个子目录所使用的空间
# du -h --max-depth=1 

// 在当前目录下,查找空间大小前20的目录
# du -h --max-depth=2 | sort -hr | head -20
  • 其他查找方法
// 在当前文件夹中,查找100M以上的文件
# find . -type f -size +100M  

// 按照文件大小,对查找结果做排序
# find . -type f -size +100M  -print0 | xargs -0 du -h | sort -nr

3. linux磁盘空间不足怎么办,磁盘清理方法

  • 查看文件系统的inodes消耗
# df -i /home

如果还有大量的inodes可用,说明大文件占用空间;否贼可能大量的小文件占用空间

  • 找出占用空间较大的目录
# du -hs /home

// 查看/home下占用空间超过1000的文件
# du / awk'$1>;2000'
  • 查看某文件被进程使用的情况

有时候删除日志文件之后再df -h查看空间依然被占满,继续排查。

# lsof /usr/local/apache-tomcat-7.0.54/logs/catalina.out

lsof file_name 查看文件占用进程情况,如果删除的日志正在被某个进程占用,则必须重启或者kill掉进程。

  • 查看指定目录下的文件和子目录大小
# du -h --max-depth=2 /usr/local/ | sort -hr | head -20
阅读更多
个人分类: Linux
上一篇Systemd入门教程(下):实战篇
下一篇修复Ubuntu 中“Unable to lock the administration directory (/var/lib/dpkg/)”的问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭