空心菜
读完需要
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
代替。