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

简介: 使用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

在这里插入图片描述

目录
相关文章
|
3天前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
50 34
|
8月前
|
存储 分布式数据库 API
技术好文:VisualC++查看文件被哪个进程占用
技术好文:VisualC++查看文件被哪个进程占用
|
6月前
|
NoSQL Redis
Redis AOFRW主进程问题之更新manifest文件如何解决
Redis AOFRW主进程问题之更新manifest文件如何解决
|
6月前
|
NoSQL 分布式数据库 Redis
Redis 进程问题之主进程更新manifest文件如何解决
Redis 进程问题之主进程更新manifest文件如何解决
|
6月前
|
SQL 关系型数据库 Shell
【一文搞懂PGSQL】3.进程和关键文件介绍
PostgreSQL采用C/S模型,拥有多种关键进程,如PM(连接管理)、SP(会话)、SysLogger(系统日志)、BgWriter(后台写)、WALWriter(预写式日志)、PgArch(归档)、AutoVacuum(自动清理)、PgStat(统计收集)和CheckPoint(检查点)。其中,PM负责连接管理,SP处理用户会话,SysLogger记录系统日志(需在`postgresql.conf`中启用),BgWriter负责脏页写盘,WALWriter处理预写式日志,PgArch负责WAL日志归
|
6月前
|
Linux
在Linux中,如何查看某进程所打开的所有文件?
在Linux中,如何查看某进程所打开的所有文件?
|
7月前
|
JavaScript 前端开发 API
Chrome插件实现问题之 content_script.js能做什么
Chrome插件实现问题之 content_script.js能做什么
|
7月前
|
小程序 Linux
【编程小实验】利用Linux fork()与文件I/O:父进程与子进程协同实现高效cp命令(前半文件与后半文件并行复制)
这个小程序是在文件IO的基础上去结合父子进程的一个使用,利用父子进程相互独立的特点实现对数据不同的操作
146 2
|
7月前
|
Linux
c创建压缩文件,用于压缩模式,-v显示压缩进程,-x解压模式,-f创建的文件,解压文件,tar -cvf
c创建压缩文件,用于压缩模式,-v显示压缩进程,-x解压模式,-f创建的文件,解压文件,tar -cvf
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;

热门文章

最新文章

相关实验场景

更多