在Linux中误删除了某个文件,但是 ps-ef|grep 文件名 发现某个进程还在使用该文件,那么可以通
过以下方式恢复文件。
例如:
创建一个简单文件/tmp/test.txt, 随便向里面写点内容
两个client模拟,client1 负责打开文件less /tmp/test.txt(模拟占用线程)
client2 负责恢复文件
恢复步骤(均在client2上执行)
1. 查看/tmp/test.txt被占用的进程id
[root@host tmp]# ps -ef|grep test.txt
root 31631 31539 0 09:35 pts/0 00:00:00 less test.txt
root 31649 31579 0 09:36 pts/1 00:00:00 grep test.txt
2. cd /proc/31631/fd 文件夹中
3. 执行ll命令
[root@host fd]# ll
total 0
lrwx------ 1 root root 64 Dec 3 09:36 0 -> /dev/pts/0
lrwx------ 1 root root 64 Dec 3 09:36 1 -> /dev/pts/0
lrwx------ 1 root root 64 Dec 3 09:36 2 -> /dev/pts/0
lr-x------ 1 root root 64 Dec 3 09:36 3 -> /dev/tty
lr-x------ 1 root root 64 Dec 3 09:36 4 -> /tmp/test.txt (deleted)
4. 发现了4是软连接到 /tmp/test.txt 文件中的
cat 4 即可找到删除的文件内容
以下是/proc目录中进程N的信息
/proc/N/cmdline 进程启动命令
/proc/N/cwd 链接到进程当前工作目录
/proc/N/environ 进程环境变量列表
/proc/N/exe 链接到进程的执行命令文件
/proc/N/fd 包含进程相关的所有的文件描述符
/proc/N/maps 与进程相关的内存映射信息
/proc/N/mem 指代进程持有的内存,不可读
/proc/N/root 链接到进程的根目录
/proc/N/stat 进程的状态
/proc/N/statm 进程使用的内存的状态
/proc/N/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程
相关推荐
本文将详细讲解如何从进程相关的文件描述符中恢复已删除的文件,以Linux中的一个实例来阐述整个过程。 首先,当一个文件被删除时,如果还有进程在使用这个文件,该文件实际上并没有立即从系统中消失,而是被标记...
此外,它还记录了进程的时间信息(如utime, stime, cutime, cstime),信号处理信息(如pending和blocked信号),文件系统状态(由`fs_struct`表示),打开的文件描述符,以及等待队列等。 进程描述符的`thread_...
在Linux中,当使用`rm`命令删除文件时,系统并不会立即从硬盘上擦除数据,而是仅仅将文件的元数据(如文件名和inode号)从文件系统的目录结构中移除。因此,只要文件的数据块未被新数据覆盖,理论上就有可能恢复已被...
- 这些函数依赖于进程上下文,因此不适合在中断处理程序或非进程相关的代码中执行。如果必须在这样的环境中操作文件,可以考虑创建内核线程来执行这些任务。 总结来说,Linux内核中的文件操作涉及到一系列内核特有...
在Linux系统中,文件描述符是操作系统用于标识和操作打开文件的一种抽象机制。当一个程序打开一个文件时,系统会分配一个唯一的文件描述符给它,通常从0开始(标准输入),1(标准输出),2(标准错误)。在这个场景...
- `id`: 通常传入`NULL`或当前进程的文件描述符表标识`current->files`。 ### 结论 在Linux内核中进行文件操作需要谨慎处理,确保使用的API正确无误,并且遵循内核开发的最佳实践。通过上述介绍的函数及其使用方法...
从【部分内容】中提供的信息来看,虽然文字因为OCR技术原因出现了一定程度的混乱,我们可以从中识别出与Linux进程相关的一些技术术语,并对它们进行解读和讲解。 1. IO(输入/输出):在进程管理中,IO是一个至关...
在 Linux 系统中,每个进程都可以打开多个文件,每个文件都对应一个文件描述符(File Descriptor)。文件描述符是一个整数,它唯一标识一个文件。文件描述符可以用来标识一个文件,并且可以用来控制文件的读写操作。...
在Linux 0.11中,文件系统的设计是层次化的,从超级块开始,通过缓冲区管理数据块,然后通过iNode管理和追踪文件,最后通过文件表和文件描述符表实现进程对文件的操作。这种设计确保了高效的数据访问和文件操作,...
`extundelete`的优势在于,即使文件不再被任何进程使用,它也能尝试从分区日志中恢复数据。 使用`extundelete`进行恢复需要注意以下几点: 1. 在尝试恢复之前,要确保被删除数据的分区已经卸载,防止新数据覆盖原有...
然后,切换到 /proc 下,删除文件对应的进程的 pid 下的文件描述符中的目录中,将对应的内容重定向或 cp 到其他文件中。 二、extundelete 命令恢复文件 extundelete 命令使用存储在分区日志中的信息,尝试恢复已从...
1. **独立性**:每个进程都有自己的资源,包括内存、文件描述符、信号量等。 2. **并发性**:多个进程可以同时运行,实现多任务处理。 3. **并发执行的抽象**:从理论上看,进程是运行中的程序抽象,从实现上讲,是...
本文深入剖析了Linux进程管理的相关概念和技术。 首先,进程控制块(task_struct)是Linux中描述进程的关键数据结构,包含了进程的所有状态和信息。每个进程都有一个唯一的进程ID(pid)和进程组ID(pgrp),用于识别和...
论文中提到的open和close操作是文件操作的基础,open用于获取文件描述符,而close用于释放资源。 7. EXT2文件系统 EXT2是专门为Linux设计的第一个扩展文件系统,具有较小的开销和良好的性能。虽然已被EXT4取代,但...
Linux 文件共享服务是将Linux系统中的文件和目录暴露给网络中的其他系统,以便进行数据交换和协作。在Linux中,有几种主要的文件共享服务,包括Samba、FTP(使用vsftpd)以及NFS(网络文件系统)。下面将详细介绍...
执行`lsof`命令会列出所有打开的文件,包括进程、用户、文件描述符、文件类型等信息。例如: ```bash $ lsof ``` #### 查找被删除但占用空间的文件 当一个大文件被删除但仍有进程使用时,它占用的空间不会立即...
文件I/O在Linux中是通过文件描述符进行的,它是一个非负整数,代表进程访问文件的唯一标识。系统调用如`open()`用于打开或创建文件,可以设置不同的标志(如O_RDONLY、O_WRONLY、O_RDWR)以指定访问模式。`O_APPEND`...
在Linux中,进程切换涉及到从一个进程的上下文到另一个进程上下文的转变,包括寄存器状态、内存映射、文件描述符等信息的保存和恢复。Linux通过精心设计的内核数据结构和算法,如调度器(scheduler)和时间片轮转,...
这项研究不仅加深了我们对Linux进程迁移机制的理解,而且推动了Linux在高性能计算领域的应用,为系统开发者提供了宝贵的参考。随着技术的不断进步,这种进程迁移机制未来或将在更多的高性能计算场景中得到应用,...