好的,在 Linux 上,当我删除一个跑步可执行文件或脚本,它通常(对我来说,几乎总是如此,但我不知道它是否在每种情况下都能正常工作)继续运行而不会出现任何问题。所以我有两个问题:
- 正在运行的可执行文件/脚本从哪里运行?RAM 内存吗?
- 如果存储在 RAM 中或任何地方,有没有办法从该位置提取可执行文件/脚本?
如果有任何区别,我正在使用 Ubuntu 11.04。
答案1
当您在 Linux 上删除文件时,该文件会保留在磁盘上(尽管不可见),直到指向它的最后一个文件描述符被关闭。只有到那时(例如,当可执行文件终止时),文件才会真正从磁盘上取消分配。任何仍具有打开的数据文件句柄的程序仍可访问数据 - 无论是作为脚本还是数据文件。
正如 peth 所说,对于任何具有打开文件描述符的进程,该文件都应该在 /proc/[pid]/fd 条目下可用。
lsof
还可以显示哪些进程仍然对相关文件打开了描述符。