通常我们在Unix or Linux服务器上查看磁盘空间和文件空间占用都会用到df
和du
这两个常用的目录。
查看当前目录磁盘分区使用情况
df -h .
输出总结了包含指定文件的文件系统的磁盘使用情况:
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 99G 13G 82G 14% /
如上表示/分区
使用率为14%, 选项-h (--human-readable)
告诉df使用对于人类阅读更友好的格式输出,而不是以1K
的方式,而是以千字节
、兆字节
和千兆字节
显示。学过GNU的实用程序都有-h
选项。
目录大小以及排序
为了更好的找到占用磁盘较大的目录,需要查看当前目录下所有目录的大小情况:
$ 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
默认只对开头的数字排序,但是带上了单位,就排序不了了,不信我们看看下面:
$ 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
为单位大小输出,不带单位符号:
8 ./pid
11900 ./logs
67528 ./tmp
412100 ./backup
422300 ./codes
2882308 ./app
4367852 ./appData
8231508 .
这样看起来可以了,但是不完美,GNU开发时候,同样意识到了这点吧,所以我们可以给sort
加一个-h
选项,更利于你阅读:
# 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里面的。
命令手册:
https://man7.org/linux/man-pages/man1/df.1.html
https://man7.org/linux/man-pages/man1/du.1.html
https://man7.org/linux/man-pages/man1/sort.1.html
https://github.com/coreutils/coreutils/blob/master/NEWS

本文由 空心菜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 30, 2020 at 03:17 pm