linux 删除文件后,如何释放磁盘空间?

环境 : 阿里云服务器 CentOS
硬盘大小 : 20G
问题 : 磁盘空间不足

处理过程 :
1. 执行"df -hl"命令,磁盘空间使用已满,结果如下

Filesystem      Size  Used     Avail     Use%     Mounted on
/dev/xvda1       20G   19G       31M     100%     /
tmpfs           938M     0      938M       0%     /dev/shm

2.发现一个14G的nohup.out文件,使用 rm -rf命令删除

3.在根目录"/"下,
执行 "du -sh"命令,结果为 5.2G,
执行"df -hl"命令,结果仍是使用100%。

请问在此情况下应该如何释放磁盘空间??


问题已经通过@leezj 的答案解决,感谢@leezj,也感谢所有回答者的关注和支持。

解决过程:
执行方法: lsof | grep nohup.out

sh         6148   leo    1w      REG              202,1 14343692933  404832 /home/leo/app/nohup.out (deleted)
sh         6148   leo    2w      REG              202,1 14343692933  404832 /home/leo/app/nohup.out (deleted)
java       6149   leo    1w      REG              202,1 14343692933  404832 /home/leo/app/nohup.out (deleted)
java       6149   leo    2w      REG              202,1 14343692933  404832 /home/leo/app/nohup.out (deleted)

杀死进程6148,6149

sudo kill -9 6148 
sudo kill -9 6149

然后执行"df -hl"查看磁盘空间,磁盘空间已释放,结果如下

Filesystem      Size  Used Avail Use%     Mounted on
/dev/xvda1       20G  5.2G   14G  28%     /
tmpfs           938M     0  938M   0%     /dev/shm
阅读 25.8k
4 个回答

通常来说这种问题是因为你要删除的文件,还有进程在使用,文件句柄没有释放,所以即使你rm -rf磁盘空间也不会被释放
解决办法:
1、如果你知道文件名的话:lsof | grep nohup.out,找到是什么进程在使用这个文件,找到后kill掉就能释放空间了

2、如果你不知道文件名的话:lsof | grep deleted,这样会查找所有被删除的但是文件句柄没有释放的文件,找到后kill掉即可

那个文件会不会是个soft link?所以你实际上只是删了他的link

新手上路,请多包涵

有些大文件删除后不会自动腾出磁盘空间,使用fsck 搞定~

不过,其实你不必这样做。。。

我直接把大文件给echo "" > xxxx

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏