Linux删除文件,df查看磁盘空间未减少

问题场景

当服务器某个路径磁盘使用率过高时,需要清理磁盘,但是rm删除大文件后,df查看磁盘空间并没有减少,但du查看显示磁盘空间已经减少

分析原因

某个进程正在连接着被删文件,空间未被释放,需要将该进程kill

df (disk free)
df是通过文件系统来获取空间大小
当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件。 所以当一个文件刚删除清空没完全释放时,df 仍会把它计算在内。

du (disk usage)
du关注的是当前存在的、没有被删除的文件。
他计算的大小就是当前他认为存在的所有文件大小的累加和

df -h
du -h -x --max-depth=1 (这种情况下du相较df更加精确)

解决方案

1.查看删除后没有释放的进程

lsof | grep deleted

2.kill该进程

kill -9 10000

服务器有可能没有lsof命令 ( lsof: command not found )

I. 服务器为外网或者内网配置了yum源
yum install lsof
II. 服务器需离线安装

1.下载安装包

https://dl.packetstormsecurity.net/UNIX/IDS/lsof/lsof_4.76.tar.gz

2.解压安装包

tar -zxvf lsof_4.76.tar.gz

3.解压源码包

cd lsof_4.76
tar -xvf lsof_4.76_src.tar

4.编译源码

cd lsof_4.76_src
./Configure linux
y
make
注:

可能存在这种尴尬情况 : 因为存储空间满了, 需要删除大文件 , 因为被删除文件还在被其他进程使用着,所以要通过lsof查看deleted相关的进程,但没有lsof命令,需要安装时又显示没有空间(no space)安装lsof 😂

解决方案II :

1、查找已经删除并未解锁的线程

ls -ld /proc/*/fd/* 2>&1 | fgrep '(deleted)'
//查询出来跟在/proc/后面的数字代表线程的pid

2、kill 掉该线程

kill -9 10000
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值