如何在 Linux 下快速找到被删除的文件?
小哈学Java
共 1627字,需浏览 4分钟
· 2021-02-22
点击上方蓝色“小哈学Java”,选择“设为星标” 回复“资源”获取独家整理的学习资料!
但有的时候,会出现怎么也查不到大文件的情况,通过 du 查找的时候,统计出来的大小,跟 df 显示的占用空间对应不上。
如果通过 df -i 查看inode没有满的话,那么极有可能,是有大文件被直接rm了,但是仍然有进程打开了这个文件。
这种情况,由于进程没有退出,因此文件占用的空间并不会释放;直到进程退出,磁盘空间才会真正释放。
如何找到是哪个进程打开了该文件
Linux上,由于进程仍然存活,因此可以通过查看所有进程打开的 fd,如果该文件已经被删除,则查看时,会显示(deleted)。
示例如下:
$ sudo find /proc/*/fd -ls | grep '(deleted)'
388609 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/4 -> /tmp/ibpX85Vd\ (deleted)
388610 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/5 -> /tmp/ibCwAgAj\ (deleted)
388611 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/6 -> /tmp/ibRZ5rep\ (deleted)
388612 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/7 -> /tmp/ibBuNEzA\ (deleted)
388616 0 lrwx------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/11 -> /tmp/ibG68kpG\ (deleted)
如何避免这种情况
不要直接删除该文件,而是通过将文件 truncate 的方式,释放磁盘空间。
一种方式是:
cat /dev/null > ${filename}
或者(新get!)
: > ${filename}
如此,可以快速释放空间。
参考文档
Find and remove large files that are open but have been deleted
本文转载自:「Zlatan Eevee」,原文:https://tinyurl.com/y89mq5oq
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
评论
Linux 删除目录下文件的 10 种方法
点击关注上方“杰哥的IT之旅”,后台回复“Python自动化”获取精心整理的PDF。作者:ZYJTF_Zhang链接:https://blog.51cto.com/zhangdaifu/1933091想起删除目录下的所有文件的方法;整理了几个,仅供参考!删除当前目录...
杰哥的IT之旅
0
涨知识:如何在Git上删除文件
代码开发中,一般会用Git来管理代码,某些情况下会删除一些不要的文件,场景包括重构代码、清理项目文件等。通过git rm命令删除文件并提交更改到本地仓库,最后将变动推送到远程仓库。这些操作有助于保持代码库整洁、准确,避免冗余文件,是项目管理中重要的一环。何时会在 Git 上删除文件在软件开发过程中,
良许Linux
0