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

0e15a761bd98949721ee538ecd20d9d0.png

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

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

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

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

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

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

示例如下:

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

3886090lrwx ------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/4 -> /tmp/ibpX85Vd (deleted)

3886100lrwx ------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/5 -> /tmp/ibCwAgAj (deleted)

3886110lrwx ------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/6 -> /tmp/ibRZ5rep (deleted)

3886120lrwx ------ 1 zerotier-one zerotier-one 64 Aug 21 00:19 /proc/29400/fd/7 -> /tmp/ibBuNEzA (deleted)

3886160lrwx ------ 1 zerotier-one zerotier-one 64 Aug 21 00: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下命令删除/tmp目录下的所有文件: ``` sudo rm -rf /tmp/* ``` 其中,`sudo`表示以管理员身份执行命令,`rm`表示删除文件,`-rf`表示递归删除目录及其子目录下的所有文件,`/tmp/*`表示删除/tmp目录下的所有文件。请注意,这个命令会彻底删除/tmp目录下的所有文件,包括重要的系统文件,因此请谨慎操作。 ### 回答2: 在Linux中,临时文件默认存储在/tmp目录下,这些文件通常在系统重启时会被自动删除。但是,有时候我们需要手动清理/tmp目录下的临时文件,以释放磁盘空间。 以下是几种删除/tmp目录下文件的方法: 1.使用rm命令 rm命令是Linux系统中经常使用的删除命令,可以使用它来删除/tmp目录下的文件。其中,-r选项表示递归删除,-f选项表示强制删除。 例如,删除/tmp目录下的所有文件: ``` sudo rm -rf /tmp/* ``` 2.使用find命令 find命令可以搜索文件系统中符合条件的文件,并执行相应的操作。可以使用find命令来删除/tmp目录下所有的临时文件。 例如,删除/tmp目录下大小超过100MB的文件: ``` sudo find /tmp -size +100M -exec rm {} \; ``` 3.使用tmpwatch命令 tmpwatch命令是一个用于清理临时文件的工具,可以自动删除/tmp目录下超过一定时间的文件。在大多数Linux系统中,tmpwatch命令已经预安装好。 例如,删除/tmp目录下30天未被修改的文件: ``` sudo tmpwatch -m 30 /tmp ``` 以上是几种删除/tmp目录下文件的方法,使用时需要注意谨慎操作,以免误删重要文件。同时,为了避免/tmp目录下的临时文件过多影响系统性能,建议定期进行清理。 ### 回答3: 在Linux系统中,tmp目录是用于存放临时文件的目录,为了保证系统的稳定性和安全性,我们需要定期清理该目录下的无用文件。以下是删除tmp目录下文件的步骤: 1. 执行以下命令进入tmp目录: cd /tmp 2. 查看当前目录下的所有文件,找出要删除文件名: ls 例如,如果要删除名为test.txt的文件,我们就需要找到test.txt在该目录下的路径。 3. 使用以下命令删除指定的文件: rm -f 文件路径 例如,要删除test.txt文件,需要执行以下命令: rm -f /tmp/test.txt 注:-f参数表示强制删除文件,即使文件被保护或者其他原因导致无法删除也会被强制删除。 4. 最后,再次使用ls命令检查文件是否已经被删除: ls 如果看不到被删除文件,则表示删除成功。 需要注意的是,删除tmp目录下的文件时,应该多次确认文件名和路径,以免误删其他重要文件,造成不必要的损失。此外,如果文件正在被占用,可能无法直接删除,需要先结束占用该文件的进程才能成功删除。在删除文件之前,可以使用lsof命令查询哪个程序在占用该文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值