登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Art - Life

KDE - Linux - 奥斯卡

 
 
 
 
 

日志

 
 

小记,如果误删了一个文件,但此刻有一程序正在使用此文件,如何恢复  

2012-11-14 12:56:06|  分类: linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
假如是在听歌,用deadbeef,先查看deadbeef的PID 

ps -A |grep deadbeef

然后用下面命令查看deadbeef的所有链接,PID就是上面查出的PID

ls -l /proc/<PID>/fd/

$ ls -l /proc/18671/fd/
total 0
lr-x------ 1 flow users 64 14.11.2012 12:01 0 -> pipe:[7802]
l-wx------ 1 flow users 64 14.11.2012 12:01 1 -> /home/flow/.xsession-errors
lr-x------ 1 flow users 64 14.11.2012 12:01 10 -> anon_inode:inotify
l-wx------ 1 flow users 64 14.11.2012 12:01 11 -> pipe:[1470906]
lrwx------ 1 flow users 64 14.11.2012 12:01 14 -> socket:[1470963]
l-wx------ 1 flow users 64 14.11.2012 12:01 2 -> /home/flow/.xsession-errors
lrwx------ 1 flow users 64 14.11.2012 12:01 3 -> socket:[1471794]
lrwx------ 1 flow users 64 14.11.2012 12:01 6 -> anon_inode:[eventfd]
lrwx------ 1 flow users 64 14.11.2012 12:01 7 -> socket:[1470862]
lr-x------ 1 flow users 64 14.11.2012 12:14 8 -> /home/flow/01 - Look Alive, Sunshine.mp3 (deleted)
lr-x------ 1 flow users 64 14.11.2012 12:01 9 -> pipe:[1470906]

以我上面的为例,倒数第二行可以看到打开的文件01 - Look Alive, Sunshine.mp3已经被删除,前面有个8,记住
/proc/<PID>/fd/ 目录存放此进程所有打开的文件描述符,目录下是一个个以数字为名称的连接,指向了进程当前正在使用的文件。  
关于/proc目录详情请看这里

cp /proc/18671/fd/8 /tmp/2.mp3

cp /proc/<PID>/fd/<fdno> /tmp/recoveredfile

linux删除文件只是删除文件在扇区的索引,文件数据会保留(有人说只要此文件没有任何指向,会被自动被删除),如果有程序在索引删除前打开了文件,有一个打开的句柄(has an open handle),就能通过该句柄访问文件。

以上术语可能有误,欢迎指正



  评论这张
 
阅读(3774)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018