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

in 互联网技术 with 0 comment  访问: 179 次

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

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

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

WeZan
Responses