Bootstrap

Linux下 文件删除但是空间未被释放 或者 磁盘已满但找不到对应的大文件 的解决方案

Linux下文件删除但是空间未被释放的解决方案

  • 前言
  • 1. 查看当前磁盘占用情况
  • 2. 模拟进程占用
  • 3. 执行rm -rf 命令删除文件
  • 4. 查看被删除但是未释放空间的文件
  • 5. 执行清空文件操作

前言

linux磁盘空间已满,手动rm -rf 删除了大文件之后,df -h 查看一下发现空间占用还是不变,有时候会想rm -rf 删除只是逻辑删除到回收站一样?其实不然,通常这种情况都是文件被删除,但是还被进程占用,因此删除文件空间未释放

通常的建议是kill 掉对应的进程,但是如果是生成环境,不能轻易kill进程的话,可以通过置空文件的方式来释放空间

通过lsof | grep deleted 找到未能删除掉的文件,确定占用的进程号
通过 ls -l /proc/PID/fd/* | grep 文件名,找到相应文件句柄
清除文件内容 echo > /proc/PID/fd/FD_NUM

此操作不会删除文件,而是将文档内容清空的方法释放空间,文件仍存在

1. 查看当前磁盘占用情况

首先查看磁盘占用,然后创建了一个5GB的文件,然后继续查看磁盘占用,可以看到磁盘可用已经减少了5GB

# 查看磁盘占用
df -h
# 创建1个5000MB的文件
dd 
;