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

在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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指剑

捐点钱吧,小笼包8元一笼,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值