使用lsof恢复进程打开的误删除文件

举报
指剑 发表于 2022/09/02 22:34:34 2022/09/02
【摘要】 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通...

在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。当完成任务后,再通过调用系统函数来关闭该文件。
任务1 lsof查看打开/var/log/messages文件的进程
[root@f ~]# lsof -l /var/log/messages

在这里插入图片描述
任务2 使用cp备份后用rm模拟误删除

[root@f ~]# cp /var/log/messages /var/log/messages.bak
[root@f ~]# rm /var/log/messages
rm: remove regular file ‘/var/log/messages’? y
[root@f ~]# cp /var/log/messages.bak /var/log/messages
[root@f ~]# ls -lh /var/log/messages
在这里插入图片描述
在这里插入图片描述
任务3 lsof再次查看message文件的状态
此处重启,再查看
[root@f ~]# lsof -l /var/log/messages

在这里插入图片描述

任务4 查看相应进程的文件描述符FD
由lsof可以知道messages的进程的893,FD为3W
使用ls 即可知道messages所连接的文件进程
[root@f ~]# ls -lh /proc/893/fd/
[root@f ~]# cat /proc/893/fd/3
在这里插入图片描述
在这里插入图片描述

任务5 通过文件描述符查看文件的内容并恢复
重启之后查看messages的进程号,删除并恢复

[root@f ~]# lsof -l /var/log/messages
[root@f ~]# rm -rf /var/log/messages
[root@f ~]# cat /proc/893/fd/3 > /var/log/messages
[root@f ~]# head /var/log/messages

在这里插入图片描述

文章来源: blog.csdn.net,作者:指剑,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fly1574/article/details/106457527

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。