df和du显示空间为何不一致

本文介绍了解决磁盘空间显示已满但du命令显示未占用大量空间的问题。通过lsof命令找出被进程占用的已删除文件,并终止相应进程以释放空间。

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


有台机器空间老是显示满,df显示已经使用了100%,可用du命令却没见占用很多空间,后来终于在网上查到了原因所在:
造成这个现象的原因是有进程仍然打开着已经被删除的文件。因为该文件已经不存在于文件目录树上,所以du遍历整个文件系统中不会统计其所占用的空间,可是,这个文件又还不能被从磁盘上删除,所以确实还占用了一部分磁盘空间。
可以用lsof来确定究竟是哪个进程搞的鬼,比如:

# lsof | grep deleted
sendmail 31818       hsq    3uW     REG        8,5  194523136     457053 /var/spool/clientmqueue/dfm9TAh6du031818(deleted)


上面这个例子显示tail(pid为31818)进程打开了一个已经被删除的文件(/var/spool/clientmqueue /dfm9TAh6du031818 ),这个文件大小为457053。此时,如果终止这个进程,那么这457053多字节就会正常释放,df的输出也就和du一致了
曾经遇到过此类问题的报告,似乎杀了sendmail就好了。当时不知原由,现在想来,可能是系统长时间运行后sendmail的日志经过了rotate,而sendmail仍然打开着旧的日志文件。

以后再遇到此类情况,直接用lsof命令,查看是哪些进程占用着已删除文件,就可处理了
http://techbbs.zol.com.cn/1/60_1476.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值