当进程打开某个文件时,只要该进程尽量可以打开该文件,即使将其删出,它依然存在于磁盘中。这意味着,进程并到底文件早被删除,它仍旧可以不向然后打开该文件时提供给给它的文件描述符通过读取数据和中写入。除开该进程之外,这个文件是决不可见的,毕竟早就彻底删除了其你所选的目录索引节点。在这种情况这个可以按照lsof来可以恢复这些文件。
在/proc目录下,其中乾坤二卦了上级主管部门内核和进程树的各种文件。/proc目录携挂的是在内存中所折射的一块区域,所以才这些文件和目录的确未知于磁盘中,并且当我们对这些文件参与读取和读取时,事实上是在从内存中查看相关信息。大多数与lsof相关的信息都存储位置于以进程的pid以此命名的目录中,即/proc/12中中有的是pid为12的进程的信息。每个进程目录中必然着各种文件,它们是可以使应用程序简单的地了解进程的内存空间、文件描述符列表、打向磁盘上的文件的符号链接和其他系统信息。lsof程序在用该信息和其他关於内核内部状态的信息来有一种其输出。因此lsof也可以显示进程的文件描述符和相关的文件名等信息。也就是我们是从访问网络进程的文件描述符可以不不能找到该文件的去相关信息。
下面举例
我/tmp目录下修改了脚本文件,此时此刻在后台运行,但是tmp异日会被系统有定时删出的,但发懒我也不想写回脚本,想把原来的可以找回,步骤如下。
1.一栏已经被删除的文件,巳经不存在了
[~]#ll/tmp/
total28
-rw-r--r--1rootroot402sep2614:19load_
srwxrwxrwx1mysqlmysql0sep1615:20
drwx------2rootroot4096oct1215:44ssh-hipbw10887drwx------2rootroot4096oct1016:12ssh-luxbjf6337
2.可以使用lsof来打开系统当前哪个进程正在然后打开文件”“
[~]#lsof|grepdiamon
sh8455root255rreg253,0173764298(deleted)
[~]#
从上面的输出看的到,进程8455正在以可读可写的然后打开这个文件,打开的文件描述符为255,另外文件被标记删掉。然后再我打开系统文件/proc/8455/fd/255
[~]#more/proc/8455/fd/255
#variables
dir/tmp
while(true)
unit
v_num`ps-ef|grepload_tab|grep-vgrep|wc-l`
if[$v_num-lt4]then
sh/tmp/load_a8/dev/null2gtamp1amp
fi
work
[~]#
3.也能找到巳经被彻底删除的文件了吗然后用来i/o重定向将其可以恢复到重新指定文件中,如下
[~]#cat/proc/8455/fd/255gt
检查文件已经被完全恢复了
[~]#ll/tmp
total36
-rw-r--r--1rootroot173oct1216:53
-rw-r--r--1rootroot402sep2614:19load_
srwxrwxrwx1mysqlmysql0sep1615:20
drwx------2rootroot4096oct1215:44ssh-hipbw10887drwx------2rootroot4096oct1016:12ssh-luxbjf6337
[~]#
查找复原的文件内容是否是正常了
[~]#
[~]#more
#variables
dir/tmp
while(true)
章
v_num`ps-ef|grepload_test|grep-vgrep|wc-l`
if[$v_num-lt4]then
sh/tmp/load_rlm/dev/null2gtamp1amp
fi
done
[~]#
眼下linux完全恢复删除文件成功已经结束
归纳:
a.在文件被删掉时,不要惊慌,尽可能存放现场
b.相对于某些数据库文件被意外删除很最有效
linux重设单用户模式进入到系统,当直接修改/etc/fstab文件时提示文件可读写,根本无法可以修改详细修改有两种方法一、进入到linux单用户模式a.在系统进入到centos数秒的时候按字母e,进入grub编辑状态b.选择以单词kernel起头的这行,按动e键以编辑这个命令行c.在末尾输入空格large,回车d.再按b键程序加载#mount-oremount,rw/f.后再vi/etc/fstab刚刚进入修改方法二、用光盘直接进入linux修复模式(光盘启动时按f2随后输入输入linuxrescue回车进入)接着如何修改fstab尽量直接进入自动修复模式后fstab路径为vi/mnt/sysimage/etc/fstab