场景
服务器报异常,硬盘空间不足。
还有一种场景:
上传文件传不上去,提示:Segmentation fault
解决方案
查看磁盘概况:
df -h
很多时候,目录很多,不容易找到到底是哪里占用空间较多,查找大文件:
find . -size +100M
ok,找到目录:
du -sh # 查看总量
ll # 看下各个文件大小
ll -t | head -n 30 # 最近30个文件
然后看哪个大,压缩或删除即可。
du命令可以使用通配符
# du命令支持通配符,但是不要加双引号 ""
du -sh *2020-03-*.log
rm -f 2020-03-05.log
用ls命令也是很好的
大小倒序:
ll -Sh | head # S 是根据大小倒序排序
日期倒序:
ll -tH | head # t 根据时间倒序
查看各个目录的大小
这个头疼了好一阵,后来发现很简单。
du -sh * ; 即可。
快速定位的标准操作:
# 显示磁盘使用情况,可以看到哪个目录占用磁盘较大
df -h;
# 然后进入该目录,查看各个目录的大小
du -sh * ;
以上2步,基本可以直接定位到。
推荐命令
du -s * | sort -nr;
-n 根据数字排序
-r reverse,反转(例如倒序)
注: du 命令不要加-h参数。为什么呢? 因为-n是根据数字排序,忽略单位。
如下面一组数据:
500M
400M
2G
很明显,2G是大的,但是因为2<500,所以2G反而排在后面,这样肯定不对。
那么可以指定根据哪列排序吗?
当然可以:
du -s * | sort -k1nr; 指定第1列。
du -s * | sort -nr; 发现了吗,这个相当于简写版,省略了-k1。因为默认就是第1列。
-k是指定列位置(从1开始)或名称。