昨天在服务器上部署 API 时,总是失败,查看日志发现磁盘空间不足,想要查看磁盘空间各种手忙脚乱,不知如何下手,懂得简单几个命令也不能称心如意的解决问题。所以痛定思痛总结了下需要用到的几种,以便以后查阅。
df
1 | $ df |
1 | Filesystem 1K-blocks Used Available Use% Mounted on |
从左到右分别标示为:文件磁盘,1K空间块数,已使用,可用,已用比例,挂载点。加上 -h
参数可以换算为方便的阅读方式1
$ df -h
1 | Filesystem Size Used Avail Use% Mounted on |
更多参数
1 | -a # 全部文件系统列表 |
du
我们已经知道当前机器的使用空间了,如果超过了 80% 的时候,就有必要查看下是哪些文件在占用空间了,通常会是些日志文件。
进入登陆用户根目录 ~
执行 du
命令,你会得到类似这个结果1
2
3
4
5
6
7
8
9...
584 ./.oh-my-zsh/themes
8 ./.oh-my-zsh/templates
4 ./.oh-my-zsh/log
8 ./.oh-my-zsh/custom/plugins/example
12 ./.oh-my-zsh/custom/plugins
20 ./.oh-my-zsh/custom
5328 ./.oh-my-zsh
6144 .
du
会遍历当前目录和所有子目录,并把文件夹大小返回,单位 K,最后一行为当前目录总大小。
同样的使用 -h
参数可以方便阅读1
2
3
4
5
6
7
8
9...
584K ./.oh-my-zsh/themes
8.0K ./.oh-my-zsh/templates
4.0K ./.oh-my-zsh/log
8.0K ./.oh-my-zsh/custom/plugins/example
12K ./.oh-my-zsh/custom/plugins
20K ./.oh-my-zsh/custom
5.3M ./.oh-my-zsh
6.0M .
但是真正使用的话你会感觉到自己机器上的文件夹太多了,因为他会所有的文件夹都遍历出来,使用 -d , --max-depth
来限制遍历的目录层数,后面跟上层级数字。1
$ du -d 1
1 | 8 ./.pip |
看,这样就简洁多了,需要注意一点,在 CentOS 6 版本以前,是没有缩写 -d
的,只能输入参数全名。
我也可以分析指定目录1
$ du .oh-my-zsh .pip
结合上边这些参数我们已经可以来做分析了,我通常这样做1
2
3$ du -hd 1 ~
$ du -hd 1 ~/.oh-my-zsh
...
我从用户根目录开始查看第一级目录的文件夹大小,并一直将目录层级细化,最后找到最大的文件夹,进入后通过 ll -h
查看哪个文件最大,-h
已经不需要我告诉有什么作用了。
更多参数
1 | -a或-all # 显示目录中个别文件的大小。 |
排序
当前目录下如果文件太多,挨个查看大小势必非常麻烦,我们可以对它进行排序,借助 sort
命令
1 | $ du -d 1 -h | sort -nr |
但是排序有些问题,因为它只按照文件数字显示大小,不考虑单位,所以不使用单位即可
1 | $ du -d 1 | sort -nr |