Linux手误rm可能不需要跑路
对于在Linux系统下误删除的文件,我们是否真的无法通过软件进行恢复呢?
文件恢复可以分为两种情况
- 一种是删除后进程仍然存在删除信息
- 另一种是删除后进程都找不到,只能借助工具进行恢复。
今天我们只讨论文件被删除后,相关进程仍然存在的情况
“
这种情况通常是有活动的进程持续进行标准输入或输出,导致文件被删除后,进程PID仍然存在。这也是有些服务器删除某些文件但磁盘空间不释放的原因。
”
已收到消息. 对于在Linux系统下误删除的文件,我们是否真的无法通过软件进行恢复呢? ### 文件恢复可以分为两种情况 – 一种是删除后进程仍然存在删除信息 – 另一种是删除后进程都找不到,只能借助工具进行恢复。 ### 今天我们只讨论文件被删除后,相关进程仍然存在的情况 > 这种情况通常是有活动的进程持续进行标准输入或输出,导致文件被删除后,进程PID仍然存在。这也是有些服务器删除某些文件但磁盘空间不释放的原因。
案例演示
创建一个文件
> vim rumenz.txt 123 //保存退出 > cat rumenz.txt 123
用tail -f
打开rumenz.txt
文件
“
目的是让
rumenz.txt
被删除后,进程依然存在”
> tail -f rumenz.txt
新开一个终端删除rumenz.txt
> rm -f rumenz.txt
找到占用rumenz.txt
的进程
- lsof查看删除的文件进程是否还存在。
- 如没有安装请自行yum install lsof或者apt-get install lsof
> lsof | grep delete | grep rumenz tail 10222 root 3r REG 253,1 4 70911074 /root/test/rumenz.txt (deleted)
“
进程ID是10222,从上面可以看出,当前文件状态为已删除(deleted)
”
恢复文件
- /proc/10222/fd:进程操作的文件描述符目录
> cd /proc/10222/fd > ls -al dr-x------ 2 root root 0 May 11 21:41 . dr-xr-xr-x 9 root root 0 May 11 21:41 .. lrwx------ 1 root root 64 May 11 21:41 0 -> /dev/pts/1 lrwx------ 1 root root 64 May 11 21:41 1 -> /dev/pts/1 lrwx------ 1 root root 64 May 11 21:41 2 -> /dev/pts/1 lr-x------ 1 root root 64 May 11 21:41 3 -> /root/test/rumenz.txt (deleted) lr-x------ 1 root root 64 May 11 21:41 4 -> anon_inode:inotify
“
开始恢复文件
”
> cp 3 /root/test/rumenz.txt > cat /root/test/rumenz.txt 123
能恢复的根本原因
“
当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行
rm -f
删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。”
以上是Linux手误rm可能不需要跑路的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Linux系统的五个基本组件是:1.内核,2.系统库,3.系统实用程序,4.图形用户界面,5.应用程序。内核管理硬件资源,系统库提供预编译函数,系统实用程序用于系统管理,GUI提供可视化交互,应用程序利用这些组件实现功能。

要查看 Git 仓库地址,请执行以下步骤:1. 打开命令行并导航到仓库目录;2. 运行 "git remote -v" 命令;3. 查看输出中的仓库名称及其相应的地址。

虽然 Notepad 无法直接运行 Java 代码,但可以通过借助其他工具实现:使用命令行编译器 (javac) 编译代码,生成字节码文件 (filename.class)。使用 Java 解释器 (java) 解释字节码,执行代码并输出结果。

在 Sublime 中运行代码的方法有六种:通过热键、菜单、构建系统、命令行、设置默认构建系统和自定义构建命令,并可通过右键单击项目/文件运行单个文件/项目,构建系统可用性取决于 Sublime Text 的安装情况。

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

要安装 Laravel,需依序进行以下步骤:安装 Composer(适用于 macOS/Linux 和 Windows)安装 Laravel 安装器创建新项目启动服务访问应用程序(网址:http://127.0.0.1:8000)设置数据库连接(如果需要)

自定义开发环境的方法有很多种,但全局 Git 配置文件是最有可能用于自定义设置(例如用户名、电子邮件、首选文本编辑器和远程分支)的一种。以下是您需要了解的有关全局 Git 配置文件的关键事项。
