当前位置: 首页 > Linux

Linux如何快速找到被删除的文件?

时间:2023-04-06 01:20:57 Linux

在日常运维过程中,我们经常需要处理磁盘空间问题。当我们收到警报时,我们会立即查找那些大文件。一般如Centos,大文件可能是/var/log/messages。但是有时候,会出现一个大文件找不到的情况。通过du查找时,计算出的大小与df显示的占用空间不对应。如果通过df-i查看inode没有满,那么很有可能直接rmed了一个大文件,但是仍然有进程打开这个文件。这种情况下,由于进程没有退出,文件占用的空间也不会被释放;直到进程退出,磁盘空间才会被释放。如何查看文件是哪个进程打开的在Linux上,由于进程还活着,所以可以查看所有进程打开的fds。如果文件已被删除,查看时会显示(已删除)。示例:$sudofind/proc/*/fd-ls|grep'(已删除)'3886090lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/4->/tmp/ibpX85Vd(已删除)3886100lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/5->/tmp/ibCwAgAj(已删除)138860lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/6->/tmp/ibRZ5rep(已删除)3886120lrwx-----1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/7->/tmp/ibBuNEzA(已删除)3886160lrwx------1zerotier-onezerotier-one64Aug2100:19/proc/29400/fd/11->/tmp/ibG68kpG(deleted)如何避免这种情况不要直接删除文件,而是通过截断文件来释放磁盘空间。一种方式是:cat/dev/null>${filename}or(newget!):>${filename}这样可以快速释放空间。参考文档:查找并删除已打开但已删除的大文件