这样使用df和du命令更完美

2020-09-03 14:50:08 浏览数 (2)

空心菜

读完需要

3

分钟

速读仅需 1 分钟

通常我们在 Unix or Linux 服务器上查看磁盘空间和文件空间占用都会用到df和du这两个常用的目录。

1

查看当前目录磁盘分区使用情况

代码语言:javascript复制
$ df -h .

输出总结了包含指定文件的文件系统的磁盘使用情况:

代码语言:javascript复制
Filesystem  Size  Used Avail Use% Mounted on
/dev/vda1   99G   13G   82G  14%  /

如上表示/分区 使用率为 14%, 选项-h (--human-readable)告诉 df 使用对于人类阅读更友好的格式输出,而不是以1K的方式,而是以千字节、兆字节和千兆字节显示。学过GNU的工具程序都有-h选项。

2

目录大小以及排序

为了更好的找到占用磁盘较大的目录,需要查看当前目录下所有目录的大小情况:

代码语言:javascript复制
$ du -hd 1 .
2.8G  ./app
4.2G  ./appData
403M  ./backup
12M   ./logs
8.0K  ./pid
66M   ./tmp
413M  ./codes
7.9G  .

同样选项-h (--human-readable)告诉 du 使用对于人类阅读更友好的格式输出, 而-d 1告诉 du 进入到一个目录层级,不加(du -h)是所有层级。

如上可以看出占用空间较大的是appData目录,但是如果目录较多,就不那么明显了,难道我要根据单位(G M K)过滤,然后在筛选吗,No, 这时候可以用上sort排序,但是sort -n默认只对开头的数字排序,但是带上了单位,就排序不了了,不信我们看看下面:

代码语言:javascript复制
$ du -hd 1 . | sort -n
2.8G  ./app
4.2G  ./appData
7.9G  .
8.0K  ./pid
12M   ./logs
66M   ./tmp
403M  ./backup
413M  ./codes

如上可以看出,还是没有排序,那怎么办,那就可以传递-k参数,默认都以KB为单位大小输出,不带单位符号:

代码语言:javascript复制
$ du -kd 1 . | sort -n
8  ./pid
11900  ./logs
67528  ./tmp
412100  ./backup
422300  ./codes
2882308  ./app
4367852  ./appData
8231508  .

这样看起来可以了,但是不完美,GNU 开发时候,同样意识到了这点吧,所以我们可以给sort加一个-h选项,更利于你阅读:

代码语言:javascript复制
$ du -hd 1 . | sort -hr
7.9G  .
4.2G  ./appData
2.8G  ./app
413M  ./codes
403M  ./backup
66M   ./tmp
12M   ./logs
8.0K  ./pid

这才是我想要的,完美: 易于阅读且经过适当排序。(sort 再加上-r选项可以反向,因此最大的目录在最前面)-h 选项是 sort 于 2009 年添加到 GNU 里面的。

提示: 有的系统默认du命令版本是没有-d参数的,需要用--max-depth=1代替。

0 人点赞