Linux怎么找到被删除的文件_Linux怎么查看被删除的文件

Linux教程 pcbiji 11553浏览 0评论

Linux 的日常运维中,我们经常会遇到磁盘空间告急的情况,这时候就需要处理磁盘空间了,在无法挂载新硬盘的情况下,我们第一时间会想到去删除那些占用磁盘空间较大的文件,比如:系统日志、数据库日志等等。以 Centos 为例,可能大文件就是 /var/log/messages。

Linux 怎么查看被删除的文件

但有的时候,会出现怎么也查不到大文件的情况,通过 du 命令查找时,统计出来的文件大小,跟 df 显示的占用空间对应不上。这是因为有些文件虽然被删除了,但仍然有进程在占用着它,没有得到彻底的释放,那么 Linux 怎么找到被删除的文件呢,电脑笔记网今天就来讲一讲。

Linux 怎么查看被删除的文件

首先,我们需要确定真是文件被删除了仍然还占用着,通过 df -i 查看 inode 即索引节点没有满的话,那么极有可能是有大文件被直接用 rm 命令删除了,但仍然有进程占用或打开了这个文件,导致磁盘空间无法彻底释放。

这时,我们可以通过查看所有进程打开的 fd,如果该文件已经被删除,则查看时,会显示(deleted)。

相关命令如下:

$ sudo find /proc/*/fd -ls | grep  '(deleted)'  

Linux 打印出来的信息示例:

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)

通过上面的命令,我们可以看到有很多临时文件虽然被删除了,但还是被进程占用着,那么如何避免这种情况呢?我们就不能直接用 rm 命令删除该文件,而是通过将文件 truncate 的方式,释放磁盘空间。

有两种方式,第一种是:

cat /dev/null > ${filename}

第二种是:

: > ${filename} 

通过上面两种命令也可以快速释放磁盘空间,这样 Linux 怎么查看被删除的文件我们就讲完了。在 Linux 的实际运维中这种情况还是很多的,大家可以将文章收藏学习一下。

转载请注明:电脑笔记网 » Linux怎么找到被删除的文件_Linux怎么查看被删除的文件

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址