You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下已删除但被进程持有的文件能否被其他进程访问?

已删除但被进程持有的文件访问问题解答

我来针对你的两个问题逐一解释:

问题1:文件已被删除,但仍有进程持有其文件句柄,其他进程能否访问该文件?

  • 直接通过原文件名是无法访问的,因为文件的目录条目已经被从文件系统中移除,系统找不到这个文件的索引路径。
  • 但存在间接访问的途径,前提是你拥有足够的权限(比如root权限,或者和持有句柄的进程属于同一用户且有对应权限)。

问题2:Linux中如何让其他进程访问这类文件或获取写入的数据?

在Linux系统里,/proc虚拟文件系统是解决这个问题的关键——它保存了所有运行中进程的实时信息,包括进程打开的文件描述符。具体操作方法如下:

  1. 定位目标进程:使用lsof命令找出持有已删除文件句柄的进程ID(PID):
    lsof | grep "deleted"
    
    输出结果里会显示进程的PID、文件描述符(FD列),以及原文件的相关信息。
  2. 找到文件的虚拟路径:每个进程的/proc/<PID>/fd/目录下,数字命名的条目就是该进程打开的文件描述符,它们是指向实际文件的符号链接。比如目标进程PID是1234,文件描述符是3,那么对应的路径就是/proc/1234/fd/3。
  3. 访问或提取数据:
    • 直接查看文件内容:
      cat /proc/1234/fd/3
      
    • 用程序打开这个路径读取数据:和操作普通文件完全一样,只要你的程序有访问该路径的权限。
    • 持久化数据到新文件:
      cp /proc/1234/fd/3 /path/to/saved_data.log
      

重要提醒

  • 权限限制:root用户可以访问所有进程的/proc目录;普通用户仅能访问自己拥有的进程的/proc内容。
  • 生命周期:只要持有文件句柄的进程还在运行,/proc下的这个文件描述符链接就会存在;一旦进程终止,系统会立即回收该文件占用的磁盘空间,届时就再也无法访问这些数据了。

内容的提问来源于stack exchange,提问作者James_pic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:55:39