当前位置: 首页 > Linux

linux手误rm可能不需要跑路

时间:2023-04-06 11:46:59 Linux

在linux下误删的文件,真的不能通过软件恢复吗?误删文件的恢复分为两种情况。一种是删除后进程存在一种是删除后找不到进程,只能借助工具恢复。今天我们只分析删除文件后相关进程仍然存在的情况。通常,有一个活动过程的连续标准输入或输出。文件删除后,进程PID依然存在。这也是为什么有些服务器删除了一些文件,但磁盘没有释放的原因。案例演示创建文件>vimrumenz.txt123//保存退出>catrumenz.txt123使用tail-f打开rumenz.txt文件。目的是让rumenz.txt被删除,进程还在>tail-frumenz.txt新开一个终端删除rumenz.txt>rm-frumenz.txt找到占用rumenz.txt的进程lsof查看是否删除文件进程仍然存在。如果没有安装,请yuminstalllsof或apt-getinstalllsof>lsof|grep删除|greprumenztail10222root3rREG253,1470911074/root/test/rumenz.txt(deleted)进程ID为10222,从上面可以看出当前文件状态为删除(deleted)恢复file/proc/10222/fd:进程运行的文件描述符目录>cd/proc/10222/fd>ls-aldr-x------2rootroot0May1121:41.dr-xr-xr-x9rootroot0May1121:41..lrwx------1rootroot64May1121:410->/dev/pts/1lrwx------1rootroot64May1121:411->/dev/pts/1lrwx------1rootroot64May1121:412->/dev/pts/1lr-x------1rootroot64May1121:413->/root/test/rumenz.txt(deleted)lr-x------1rootroot64May1121:414->anon_inode:inotify开始恢复文件>cp3/root/test/rumenz.txt>cat/root/test/rumenz.txt123恢复的根本原因程序运行时,操作系统会专门开辟一块内存区域给当前进程使用,对于依赖文件,运行系统会发出一个文件描述符来读写文件。当我们执行rm-f删除一个文件时,我们只是删除了该文件的目录索引节点,这个节点对于文件系统是不可见的,但是对于打开它的进程来说还是可见的,即之前发出的文件描述符可以仍然用于读写文件。正是这个原理,我们才可以使用I/O重定向来恢复文件。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门站