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

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

但有的时候,会出现怎么也查不到大文件的情况,通过 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}

如此,可以快速释放空间。

参考文档

  1. Find and remove large files that are open but have been deleted
(0)

相关推荐

  • linux 下制作可启动 img/iso 文件的方法

    制作镜像文件有三种方法,cp, cat, dd 和其它专用工具。cp ,cat 和 dd都可以从设备复制文件来创建镜像。而 dd 命令更为强大,可以通过指定块大小,块多少来直接创建镜像。 IMG 文件 ...

  • QQ上下载的文件如何快速找到并且删除?

    QQ是我们都需要使用到的,尤其是在我们上班期间,经常性需要使用QQ来传送我们的文件,小编就是经常需要使用QQ来传送文件,传送图片等,这些文件在手机上下载了,怎么删除掉呢?小编来和大家探讨:QQ上下载的 ...

  • Linux下快速批量修改文件夹下的图片名称的方法

    我们都知道,要修改文件夹下的图片名称很容易,但是要批量修改就比较浪费时间了,那么有什么方法能够快速批量修改图片名称呢?下面小编就给大家介绍下Linux下快速批量修改图片名称的方法。 如10.11一批这 ...

  • 如何在Linux下设置访问控制列表(ACL)来控制用户的权限

    Linux下的访问控制列表(ACL)主要用来控制用户的权限,可以做到不同用户对同一文件有不同的权限,那么具体要如何操作呢?下面小编就教你如何在Linux下设置访问控制列表(ACL)来控制用户的权限。 ...

  • 如何在win7下快速获取高级管理员权限?

    在很多情况下,我们在操作电脑的时候都需要用到高级权限,只有获取到超级管理员权限的时候,我们才可以完成某项操作,那么如何在win7下快速获取高级管理员权限?小编下面就来介绍一下吧! 其实很简单,我们只需 ...

  • 如何删除FTP下顽固的难以删除的文件夹的方法

    操作方法 01 大家好,很高兴你能够来肥嘟嘟经验分享,肥嘟嘟除了本职工作之外,还是一个小小的站长,在处理站务事情的过程中是边学边做,积累了不少的经验和教训,在这里,我只分享我处理问题的经验. 言归正传 ...

  • 怎么快速找到电脑中的文件

    在电脑上查找文件的方法有很多种,今天就跟大家介绍一下怎么快速找到电脑中的文件的具体操作步骤.借助电脑自带的搜索功能1. 首先打开电脑,找到桌面上的[我的电脑]双击打开,进入页面后,点击右上方的[搜索框 ...

  • Win7下快速找到"本地连接"

    习惯了Windows XP操作方式的用户,在一接触到Windows 7时,有很多桌面功能看上去总是闲得很陌生。比如在Windows XP中,“网络连接”属性窗口中可以直接看到“本地连接”的图标,但在W ...

  • 如何在Linux下搭建apache服务器

    这里为大家详细的介绍如何在linux环境下搭建apache服务器,Linux环境是在虚拟机下装redhat系统.apache包为2.2.11 操作方法 01 删除Linux系统本身自带有apache服 ...

  • 如何在Linux 下基于PC 进行 PROFIBUS 通信测试

    DF PROFI II,这款高性能PROFIBUS DP/DPV1接口板,作为PCI.PCI-Express.CompactPCI和PC104+接口板卡, DF PROFI II广泛应用于各种领域.因 ...