建站优化

当前位置:

如何在 Linux 下快速找到被删除的文件,linux如何快速查找文件

浏览量:124次

如何在 Linux 下快速找到被删除的文件,linux如何快速查找文件

日常运维过程中,我们经常需要处理磁盘空间问题,当接到告警后,第一时间会去找那些大文件,一般比如 Centos,可能大文件就是 /var/log/messages。

但有的时候,会出现怎么也查不到大文件的情况,通过 du 查找的时候,统计出来的大小,跟 df 显示的占用空间对应不上。

如果通过 df -i 查看inode没有满的话,那么极有可能,是有大文件被直接rm了,但是仍然有进程打开了这个文件。

这种情况,由于进程没有退出,因此文件占用的空间并不会释放;直到进程退出,磁盘空间才会真正释放。

如何找到是哪个进程打开了该文件

Linux上,由于进程仍然存活,因此可以通过查看所有进程打开的 fd,如果该文件已经被删除,则查看时,会显示(deleted)。

示例如下:

$sudofind/proc/*/fd-ls|grep'(deleted)'3886090lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/4->/tmp/ibpX85Vd\(deleted)3886100lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/5->/tmp/ibCwAgAj\(deleted)3886110lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/6->/tmp/ibRZ5rep\(deleted)3886120lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/7->/tmp/ibBuNEzA\(deleted)3886160lrwx------1zerotier-onezerotier-one64Aug2100: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

[声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【779898168@qq.com】,我们在确认后,会立即删除,保证您的版权。