du 和 df以及lsof

本文对比分析了du和df命令在文件系统空间管理中的不同作用。du命令通过搜索文件计算大小,反映实际文件占用;df命令从文件系统层面获取信息,即使文件被删除但句柄未关闭,仍会显示占用空间。文章还介绍了如何优雅地清空日志文件及检查被应用引用的已删除文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

du:disk usage

通过搜索文件来计算每个文件的大小然后累加得到的值。

 

df:disk free

通过文件系统来获取空间大小的信息。

 

如果用户删除了一个正在运行的应用程序所打开的某个目录下的文件:

  • du命令返回的值,显示出减去了该文件后的总大小
  • df命令返回的值,则不显示减去该文件后的大小(文件句柄还在被使用),直到该运行的应用程序关闭了这个打开的文件(才会真正释放空间)

 

常见的场景是,删除了一个很大的正在写入的tomcat的access日志,du显示的结果会把日志大小减去,而df则仍会包含该日志的大小(实际上tomcat仍引用了该文件的句柄)。

 

对我们的启示是,如果要删除某个access日志,不要粗暴的rm,而要温柔的:

echo "" > access.log

 

如何发现被应用程序引用着“已删除”文件呢?

lsof -n |grep deleted

lsof简介lsof(list open files)是一个列出当前系统打开文件的工具。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值