一、问题描述 🙂
美好的一天,满心欢喜修改了代码,满心欢喜打包好jar包,用MobaXterm软件连接服务器,“docker stop 容器id”,一切正常。
来了!“./run.sh”,运行容器创建脚本,脚步执行一半就报错了,脚本没有改动过,然后发现服务器下方,有一处比较显眼😭,磁盘占用率100%
第一反应就是查找,容器日志文件,“/var/lib/docker/containers/”
发现此文件夹下的日志并不大,但也顺手给清理了,犯难还有什么地方文件大,下面解答
二、解决步骤 ⭐
# 查看磁盘情况
df -f
# 查看文件大小,查看哪个文件夹占用高
# 假设data文件夹,'cd data' 再执行 ‘du -h --max-depth=1’ ,一层一层查找
du -h --max-depth=1
[root@ecs-8a1c-1109893 /]# du -h --max-depth=1
我的问题原因找到了,是nacos的日志存了20多G(/data/nacos/bin/logs/),我将日志删除了,disk使用率从100%降到 30%【正确做法下回分解】
三、知识简介 🌙
du : disk usage,是通过搜索文件来计算每个文件的大小然后累加;
du搜索到的文件只是一些当前存在的,没有被删除的,他计算的大小就是当前他认为存在的所有文件大小的累加和
df,disk free,通过文件系统来快速获取空间大小的信息;
当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了;
当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件;
df 记录的是通过文件系统获取到的文件的大小,df 可以看到被删除还未释放的文件;
df 计算大小的时候,把被删除还未释放的空间也加上了,更精确;
当文件系统也确定删除了该文件后,这时候du与df就一致了
-a:显示全部目录和其次目录下的每个档案所占的磁盘空间
-s:只显示各档案大小的总合
-b:大小用bytes来表示
-x:跳过在不同文件系统上的目录不予统计
-a:递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数
-h是使输出结果更易于人类阅读;
du -s只展示目录的使用总量(不分别展示各个子目录情况);
-m是以MB为单位展示目录的大小(-k/-g就是KB/GB了)。
du -s 展示目录总量,且以k为单位
du -sh 展示目录总量,自动以可读性高的方式展示大小
du -sh /* 查看根目录下其他文件夹名称和大小
du -h 没有指定文件夹路径,则查询当前路径下的文件夹,以及文件夹下的文件夹大小
du -h --max-depth=1 查询当前路径下的一级文件夹大小
du -h --max-depth=1 | grep 'G' 查询当前路径下的一级文件夹,匹配'G'的文件夹 大小
a:显示全部的档案系统和各分割区的磁盘使用情形
i:显示i -nodes的使用量
k:大小用k来表示 (默认值)
t:显示某一个档案系统的所有分割区磁盘使用量
x:显示不是某一个档案系统的所有分割区磁盘使用量
T:显示每个分割区所属的档案系统名称
df -h 磁盘使用情况(文件系统的使用情况)
df -hT 查询磁盘占用空间
举例:
[root@ecs-8a1c-1109893 data]# df -h
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on
ls -ll 查看该文件夹下的大小
ls -lh 查看该文件夹下的大小,以K为单位