昨天在服务器上部署 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 | ... |
du
会遍历当前目录和所有子目录,并把文件夹大小返回,单位 K,最后一行为当前目录总大小。
同样的使用 -h
参数可以方便阅读
1 | ... |
但是真正使用的话你会感觉到自己机器上的文件夹太多了,因为他会所有的文件夹都遍历出来,使用 -d , --max-depth
来限制遍历的目录层数,后面跟上层级数字。
1 | $ du -d 1 |
1 | 8 ./.pip |
看,这样就简洁多了,需要注意一点,在 CentOS 6 版本以前,是没有缩写 -d
的,只能输入参数全名。
我也可以分析指定目录
1 | $ du .oh-my-zsh .pip |
结合上边这些参数我们已经可以来做分析了,我通常这样做
1 | $ du -hd 1 ~ |
我从用户根目录开始查看第一级目录的文件夹大小,并一直将目录层级细化,最后找到最大的文件夹,进入后通过 ll -h
查看哪个文件最大,-h
已经不需要我告诉有什么作用了。
更多参数
1 | -a或-all # 显示目录中个别文件的大小。 |
排序
当前目录下如果文件太多,挨个查看大小势必非常麻烦,我们可以对它进行排序,借助 sort
命令
1 | $ du -d 1 -h | sort -nr |
但是排序有些问题,因为它只按照文件数字显示大小,不考虑单位,所以不使用单位即可
1 | $ du -d 1 | sort -nr |
