Linux系统中df与du命令查看分区大小

一. df:检查文件系统占用磁盘情况

    disk free的缩写,使用 statfs 系统调用,直接读取分区的超级块信息获取分区使用情况。它的数据是基于分区元数据的,所以只能针对整个分区。由于 df 直接读取超级块,所以运行速度不受文件多少影响。

二. du:检查目录占用磁盘情况

    disk usage 的缩写,du 命令会对统计文件逐个调用 fstat 系统调用,获取文件大小。它的数据是基于文件获取的,所以有很大的灵活性,不一定非要针对一个分区,可以跨越多个分区操作。如果统计的目录中文件很多,du 速度就会变慢。

三. df和du的区别    

     当一个文件被删除后,在文件系统目录中已经不见了,所以 du 不会再统计。然而如果此时还有运行的进程持有这个已经被删除的文件的句柄,这个文件就不会真正在磁盘中删除, 分区超级块中的信息也不会更改。这样 df 仍旧会统计这个被删除的文件。

    正常情况下两条命令看到的磁盘占用情况应该一致,什么情况下会出现结果不一致的情况呢?下面给大家分享在项目中遇到的问题;

设备分区满了,什么情况?赶紧看看什么原因:

先看看目录大小:

再看看文件大小,原来是log文件:

删除文件:

这下恢复了吧?

what?使用df查看/run/user/1000分区的使用率还是100%:

可使用du查看文件夹的大小明明只有28K啊:

怎么办?

lsof查看被删除的文件被打开的情况:

确认进程:

杀掉进程:

df查看分区空间正常:

以上设备截图为举例,在实际的项目开发过程中,有很多日志需要处理,如系统引擎日志、nginx日志、各类开源软件日志等。对日志的大小都需要进行管理。在删除旧日志时,很可能就会遇到这个问题。

问题解决方法:

  1. lsof查看使用文件的进程,结束进程。
  2. 或使用清空的方式代替rm,如echo > /tmp/test.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

查里王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值