Linux 利用进程打开的文件描述符(/proc)恢复被误删文件
Linux 利用进程打开的文件描述符(/proc)恢复被误删文件
在 windows 上删除文件时,如果文件还在使用中,会提示一个错误;但是在 linux 上删除文件时,无论文件是否在使用中,甚至是还是在写入,都可以被 rm 简单地删除 :-<
不过,rm 删除时并非是被真正地擦除,特别是当文件还在被进程打开时,是可以完整地恢复的。 linux 的每个文件对应一个 inode 号,它有两个计数 i_count (内存引用计数,当前使用这个文件的进程数量) 和 i_nlink (磁盘引用计数,硬链接数量)。rm 操作时,把 i_nlink 数量减1 ,但只要 i_nlink 和 i_count 任意一个不为 0 ,该文件并没有被系统删除,所占用的空间不会被回收,占用 df 里面显示的硬盘容量,数据不会被覆盖。
进程所打开的文件会记录在 proc 文件系统,在 /proc/<进程 id>/fd 中,会有关于这个进程所打开的所有文件描述符,如下 :
root@ubuntu:/proc/20697/fd# ll
total 0
dr-x------ 2 libvirt-qemu kvm 0 Oct 10 12:39 ./
dr-xr-xr-x 9 libvirt-qemu kvm 0 Oct 10 12:21 ../
lrwx------ 1 libvirt-qemu kvm 64 Oct 10 12:39 0 -> /dev/null
l-wx------ 1 libvirt-qemu kvm 64 Oct 10 12:39 1 -> /var/log/libvirt/qemu/instance-00000161.log
lrwx------ 1 libvirt-qemu kvm 64 Oct 10 12:39 10 -> anon_inode:kvm-vm
lrwx------ 1 libvirt-qemu kvm 64 Oct 10 12:39 11 -> anon_inode:[eventfd]
lrwx------ 1 libvirt-qemu kvm 64 Oct 10 12:39 12 -> anon_inode:[eventfd]
...
因此,可以把被误删除的文件从这里找回来了。
Linux 利用进程打开的文件描述符(/proc)恢复被误删文件的更多相关文章
- 误删除innodb ibdata数据文件 文件句柄 文件描述符 proc fd
误删除innodb ibdata数据文件 文件句柄 文件描述符 proc fd http://www.cnblogs.com/gomysql/p/3702216.html 提示:如果不小心通过 ...
- 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换(转)
转自: http://blog.csdn.net/jenghau/article/details/5532265 文件指针/句柄(FILE*).文件描述符(fd)以及 文件路径(filepath)的相 ...
- Linux中的文件描述符与打开文件之间的关系
Linux中的文件描述符与打开文件之间的关系 导读 内核(kernel)利用文件描述符(file descriptor)来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描 ...
- Linux的进程、线程、文件描述符是什么
说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别. Linux 中的进程就是一个数据结构,看明白就可以理解文件描述符.重定向.管 ...
- Linux 进程间传递文件描述符
文章目录 文件描述符 文件数据结构 共享文件 UNIX域socket实现传递文件描述符 进程间传递打开的文件描述符,并不是传递文件描述符的值.先说一下文件描述符. 文件描述符 对内核来说,所有打开的文 ...
- Linux文件描述符与打开文件之间的区别(转载)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为: ...
- Linux中的文件描述符与打开文件之间的关系------------每天进步一点点系列
http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件. ...
- [转] linux系统文件流、文件描述符与进程间关系详解
http://blog.sina.com.cn/s/blog_67b74aea01018ycx.html linux(unix)进程与文件的关系错综复杂,本教程试图详细的阐述这个问题. 包括: ...
- (转)Linux中的文件描述符与打开文件之间的关系
转:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文 ...
随机推荐
- Linux常用命令学习4---(挂载命令mount umount、用户登陆查看和用户交互命令 w who last lastlog)
紧接着上一篇Linux的命令行的学习:Linux学习3---(文件的压缩和解压缩命令zip unzip tar.关机和重启命令shutdown reboot……) 1.挂载命令 简介 ...
- Linux下安裝Oracle database內核參數設置
參考:1529864.1 ************************************************** RAM ...
- PDA移动POS终端系统,实现专柜或店铺的收货、零售、盘点通过无线网络直接连接总部中央数据库,实现高效安全的移动供应链管理
利用PDA移动终端,实现专柜或店铺的收货.零售.盘点等一体化操作,通过无线网络直接连接总部中央数据库,实现高效安全的移动供应链管理. · PDA订货会应用解决方案利用PDA或电脑系统,在订货会现场直接 ...
- [软件推荐]Windows文件夹多标签工具Clover
Clover 是 Windows Explorer 资源管理器的一个扩展,为其增加类似谷歌 Chrome 浏览器的多标签页功能,目前最新版本为:3.1.7 Clover 把 Chrome 标签页有的样 ...
- android开发中fragment获取context
在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationCont ...
- 访问本地json文件因跨域导致的问题
我使用jquery的getJSON的方法获取本地的json文件,并进行操作,获取json 数据代码如下: $.getJSON("invite_panel.json",functio ...
- Spring中scope作用域
scope作用域: 1.prototype 2.request 3.session 4.singleton 5.global session 1.prototype(多例) prototyp ...
- uva116
这题是一道dp的水题,类似于数塔,从右向左倒着加上去,找到最小值,然后在从左到右输出路径. #include"iostream" #include"stdio.h&quo ...
- arp欺骗技术
ARP欺骗技术-获取内网目标IP访问图片! 简介: ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层,负责将某个IP地址解析 ...
- URL重写无效
在IIS7或以上版本中使用urlrewriter时会出现无效的现像,这时候需要使用以下设置