前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在 Linux 下快速找到被删除的文件

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

原创
作者头像
PHP开发工程师
修改于 2021-05-31 02:27:57
修改于 2021-05-31 02:27:57
3.2K00
代码可运行
举报
文章被收录于专栏:thinkphp+vuethinkphp+vue
运行总次数:0
代码可运行

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

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

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

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

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

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

示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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 的方式,释放磁盘空间。

一种方式是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat /dev/null > ${filename}

或者(新get!)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
: > ${filename}

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

完整实例:http://github.crmeb.net/u/defu

来自 “开源世界 ” ,链接:http://ym.baisou.ltd/post/657.html,如需转载,请注明出处,否则将追究法律责任。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
面试题:rm 删除文件之后,空间就被释放了吗?你知道答案吗?
在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意。
程序员白楠楠
2020/12/06
1.6K0
linux手误rm可能不需要跑路
原文链接:https://rumenz.com/rumenbiji/linux-rm-restore.html
入门笔记
2021/10/01
4470
MySQL中查看InnoDB状态的一个小技巧
MySQL中如果要查看InnoDB的状态,如果想看到更完整的信息,毫无疑问就是命令show engine innodb status。
jeanron100
2018/09/29
1.5K0
MySQL中查看InnoDB状态的一个小技巧
如何找到被删除的文件
日常运维过程中,我们经常需要处理磁盘空间问题,当接到告警后,第一时间会去找那些大文件,一般比如centos,可能大文件就是 /var/log/messages。
网络技术联盟站
2021/02/22
2.4K0
InnoDB 体系结构(上)
系统层是相应的数据字典,数据文件和日志文件,其中binlog是MySQL Server层的,放在这里是因为和InnoDB有密切的关系。
jeanron100
2019/03/07
9200
InnoDB 体系结构(上)
一次诡异的磁盘空间占用问题排查
大半夜接到线上一服务器磁盘占用率超过90%的短信,需要立即处理。一般这种情况都是线上异常,当天日志打太多,无法自动删掉的。上来第一反应就是查我们规范java应用日志目录,居然没有文件,再查,居然连java进程都没有,原来不是java应用,不过没关系,干一年运维也不是白干的,还是有其他方法可以查的,在此记录下整个排查过程。
xindoo
2021/01/21
2.1K0
想后台运行没想到导致磁盘满了
之前在《如何让程序真正地后台运行》一文中提到了程序后台运行的写法,但是里面的示例程序在某些场景下是会有问题的,这里先不说什么问题,我们先看看这个磁盘满的问题是怎么产生的,通过这篇文章你将会学习到大量linux命令的实操使用。
编程珠玑
2020/10/27
1.2K0
linux 系统监控、诊断工具之 lsof 用法简介
1、lsof 简介 lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具。 它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~ 它可以用来列出被各种进程打开的文件信息,记住:linux 下 “一切皆文件”, 包括但不限于 pipes, sockets, directories, devices, 等等。 因此,使用 lsof,你可以获取任何被打开文件的各种信息。 只需输入 lsof 就可以生成大量的信息,因为 lsof 需要访问核心内存和各种文
用户1177713
2018/02/24
2.3K0
服务器删除文件后磁盘空间没有立刻释放问题
发现一台服务器的磁盘空间不足,需要进行处理,登录后发现磁盘使用率已经100%,操作删除了一些文件和日志信息后,查看空间仍然没有变化。
javaNice
2023/11/17
9250
使用句柄实现特定场景的无备份恢复 (r3笔记第61天)
在dba的工作中,备份是一切工作的基础。如果没有备份,本来很简单的恢复工作也会难上加难,如果业务数据要求很高,造成数据的丢失或者损坏,就是重大事故了。 使用rman备份或者做一个完整的系统级备份也是很重要的,如果在特定的场景下,没有备份,如果还能恢复,那就太幸运了。 当数据库中的某个数据文件误删的时候,如果数据库还没有重启的时候,还是能够做一些工作的。因为文件对应的句柄还没有释放。我们可以从里面找到一个镜像的备份实现我们的数据恢复。一定注意这种恢复不一定是完全的数据恢复,如果在数据文件删除的瞬间,有开启的事
jeanron100
2018/03/15
7220
Linux恢复误删文件的操作
Linux下,有时候我们可能会误删除一些文件,此时除了慌张,有什么可以补救的措施?
bisal
2021/02/02
3.4K0
linux linux tmp目录下 文件误删除恢复
场景:   /tmp/zonesvr_3.2.1.1.pid 被误删除了,想要恢复。
葫芦
2019/04/17
9.1K0
Linux清理磁盘空间常用命令
找出已经删除但磁盘空间未释放的文件,如果文件已经删除,但实际的磁盘空间未释放,这个时候文件句柄 fd 相关信息还在内存中,可以通过 lsof 命令找出,比如打开文件的pid和读写文件的系统fd。
幻影龙王
2021/09/08
4K0
Linux清理磁盘空间常用命令
rm -rf误操作删除了数据文件后如何快速恢复?
如果执行了rm -rf操作删除了所有的基于FS的数据文件,但是数据库还处于OPEN状态,那么,在这种情况下如何快速地恢复数据库呢?这里的前提条件是没有任何可用的RMAN备份、数据库冷备份等,也就是说,没有任何备份。在这种情况下可以通过系统的文件句柄号来恢复数据文件。整个恢复过程可以简单分为如下几步:
AiDBA宝典
2019/09/30
5.9K0
rm 删除文件空间就释放了吗?
在 Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意。
杰哥的IT之旅
2020/06/29
1.6K0
Linux文件后删除空间未释放问题
当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放的情况。很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系统的回收站一样,删除只是逻辑删除到回收站一样?其实不然,linux的回收站功能想了解的可以与我沟通或查资料了解一下,也是个比较实用的方法,此处我们主要实践文件删除后空间未释放问题。
俊才
2020/05/21
7.9K0
Linux lsof 命令详解
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
阳光岛主
2019/02/19
7.6K0
Linux lsof 命令详解
解决Linux系统删除文件后空间并没有释放的问题
操作系统:CentOS 6.8 x64   使用 df -h 命令,看见 / 根目录下磁盘空间已满(100%),于是手动清理大日志文件。
星泽V社
2022/03/02
12.3K0
Linux入侵检查实用指令
1 可以得出filename正在运行的进程 #pidof filename 2 可以通过文件或者tcp udp协议看到进程 #fuser -n tcp port 3 可以看文件修改时间,大小等信息 #stat filename 4 看加载模块 #lsmod 5 看rpc服务开放 #rpcinfo -p 6 看网卡是否混杂模式(promiscuous mod) #dmesg|grep eth0 7 看命令是否被更改,象md5sum一样 #rpm -Vf /bin/ls rpm -Vf /bin/ps正常无输出
小小科
2018/05/02
2.5K0
CentOS删除文件后没有释放空间
发现一台服务器的home空间满了,要清空无用的文件,但删除文件后,发现可用空间没有变化 os:centos6.0
黄啊码
2020/05/31
3.5K0
推荐阅读
相关推荐
面试题:rm 删除文件之后,空间就被释放了吗?你知道答案吗?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验