在 (Ubuntu) Linux 中从内存中提取可执行文件/脚本

Pyl*_*lsa 2 linux

好的,在 Linux 上,当我删除正在运行的可执行文件或脚本时,它通常(对我来说,几乎总是如此,但我不知道它是否适用于所有情况)继续运行而没有任何问题。所以我在这里有两个问题:

  1. 正在运行的可执行文件/脚本从哪里运行?RAM内存?
  2. 如果存储在 RAM 中或任何地方,有没有办法从该位置提取可执行文件/脚本?

如果有什么不同,我使用的是 Ubuntu 11.04。

Maj*_*nko 5

在 Linux 上删除文件时,该文件将保留在磁盘上(尽管不可见),直到指向它的最后一个文件描述符关闭。只有这样(例如,当可执行文件终止时),文件才会真正从磁盘中解除分配。任何程序仍然可以访问数据,该程序仍然具有数据的打开文件句柄 - 无论是作为脚本还是作为数据文件。

正如peth所说,对于任何具有打开文件描述符的进程,该文件应该在/proc/[pid]/fd条目下可用。

lsof 还可以显示哪些进程仍然对相关文件打开了描述符。