为什么终端可以自行卸载?

Hue*_*uey 25 package-management command-line process xterm

截屏

怎么apt-get remove xterm通过?并且在它被卸载后,xterm不会关闭并继续正常运行。

xterm进程在运行时是否缓存在 RAM 中?

psu*_*usi 53

不完全的。该文件已被程序打开。删除文件(然后用另一个版本替换它)不会影响正在运行的程序,因为原始文件一直处于打开状态(尽管磁盘上没有名称可以再次打开它),直到程序完成它。只有当文件的所有句柄都关闭时,它在磁盘上的数据块才会被释放。在此之前,可以像平常一样读取和写入打开的文件——唯一的变化是,由于其名称已被删除,其他人无法打开它。

虽然程序的某些部分在删除时可能已经读入 ram,但它们仍可能被丢弃并在以后重新读取,或者程序的新部分以前没有执行过,但仍然可以从删除的文件中加载。

  • 如果你想用“作品”这个词来形容成功地把一切都搞砸了。;) 有趣的是,如果您尝试在之后立即第二次运行它,`rm -rf /` 将不起作用;) (6认同)
  • 这就是真正的原因....这也是`rm -rf /`起作用的原因..... (4认同)
  • @KilianFoth 如果有文件句柄,则“root”可能能够使用“linkat”系统调用为其创建名称(从而防止删除)。但是可执行文件和库是内存映射的,不需要文件句柄。我不知道有什么方法可以处理一个只存在的文件,因为它是内存映射的。尽管可执行文件在运行时可以通过 `/proc` 访问,因此只有库和其他内存映射文件可能无法恢复。如果您想了解更多详细信息,您应该将其作为一个单独的问题提出。 (3认同)

Oli*_*Oli 8

xterm进程在运行时是否缓存在 RAM 中?

确切地。它类似于允许您在事物运行时安装更新而不会崩溃的过程。以及为什么您必须在更新服务后重新启动服务。一旦某个东西在运行,它的二进制文件就在内存中。

如果它依赖于被删除或替换的其他文件(未处于保持的“打开”状态),则可能会导致问题,但对于像 那样离散的文件xterm,这不是问题。

  • 它不一定在 RAM 中。但是文件在没有打开之前实际上不会被删除,包括 xterm 可执行文件。 (17认同)
  • 不完全是......程序的一部分仅在需要时才读入内存,并且可能随时被丢弃以释放内存以供其他用途,因此稍后需要再次读入(当程序尝试访问这些部分时再次 )。 (6认同)