前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这样使用df和du命令更完美

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

作者头像
后场技术
发布2020-09-03 14:50:08
9830
发布2020-09-03 14:50:08
举报
文章被收录于专栏:后场技术

空心菜

读完需要

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代替。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后场技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档