一、问题描述 🙂

美好的一天,满心欢喜修改了代码,满心欢喜打包好jar包,用MobaXterm软件连接服务器,“docker stop 容器id”,一切正常。

来了!“./run.sh”,运行容器创建脚本,脚步执行一半就报错了,脚本没有改动过,然后发现服务器下方,有一处比较显眼😭,磁盘占用率100%

centos 查大文件 centos查找大文件命令_服务器


第一反应就是查找,容器日志文件,“/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为单位