温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Linux中怎么利用lsof 恢复已删除的文件

发布时间:2021-06-22 15:26:23 来源:亿速云 阅读:222 作者:Leah 栏目:大数据

本篇文章为大家展示了Linux中怎么利用lsof 恢复已删除的文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

  1. 新建文件:

    /> cd /tmp
    tmp> ls -lR / > /tmp/myfile
    tmp> ls -l myfile
    -rw-r--r-- 1 fred ftp 11567585 Nov 23 08:44 myfile
    tmp> stat myfile
    File: `myfile'Size: 11567585Blocks: 22640IO Block: 4096 regular fileDevice: 900h/2304dInode: 48871Links: 1Access: (0644/-rw-r--r--)Uid: ( 1900/fred)Gid: (50/ftp)Access: 2006-11-23 08:44:32.000000000 +0000Modify: 2006-11-23 08:44:26.000000000 +0000 Change: 2006-11-23 08:44:26.000000000 +0000

  2. 执行某些命令保持文件被打开:

    scum 97 tmp> less myfile &
    [1] + Suspended (tty output) less myfile

  3. "突然" 删除文件:

    tmp> rm myfile
    tmp> ls -l myfile
    ls: myfile: No such file or directory

  4. 使用 lsof 查看打开文件描述符的进程:

    tmp> lsof | grep myfile
    less11230fred4rREG9,0 1156758548871 /tmp/myfile (deleted)

第二列就是打开文件的进程PID,第四列就是进程打开文件描述符

  1. 在 /proc 下定位打开的文件描述符
    tmp> ls -l /proc/11230/fd/4
    lr-x------ 1 fred ftp 64 Nov 23 08:49 /proc/11230/fd/4 -> /tmp/myfile (deleted)

  2. 这个时候文件就可以被复制回原来的位置:

    tmp> cp /proc/11230/fd/4 myfile
    tmp> ls -l myfile
    -rw-r--r-- 1 fred ftp 11567585 Nov 23 08:54 myfile
    tmp> stat myfile
    File: `myfile'Size: 11567585Blocks: 22640IO Block: 4096 regular fileDevice: 900h/2304dInode: 48878Links: 1Access: (0644/-rw-r--r--)Uid: ( 1900/fred)Gid: (50/ftp)Access: 2006-11-23 08:54:28.000000000 +0000Modify: 2006-11-23 08:54:28.000000000 +0000 Change: 2006-11-23 08:54:28.000000000 +0000

注意:


复制回来的文件和进程打开的文件inode不一样,这个意味着复制出来之后程序对原来文件的修改不会被恢复


上述内容就是Linux中怎么利用lsof 恢复已删除的文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI