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