已删除的文件仍然打开消耗巨大的磁盘 space

deleted files remains open consuming huge disk space

我 运行 java processes.But 消耗大量磁盘 space 打开一些已删除的文件。文件的位置是 /tmp(即虽然我不是专门创建这些文件)。出现这种情况的原因是什么以及如何克服?

这可能发生在 Linux 上,当一个进程仍在使用一个文件而另一个进程删除该文件时。该文件将显示为已删除,但在幕后,只要任何进程仍在使用文件描述符,内核就不会释放 space。

要释放space,您必须告诉程序关闭文件描述符。这完全取决于程序设计,甚至可能是不可能的。例如,如果这是一个文字处理器,您可以在主菜单中选择“文件”->“关闭”。

如果您无法"tell"程序关闭文件,您最后的选择是终止进程。

如果你喜欢玩,你也可以使用调试器附加到进程,例如gdb,找到描述符并手动关闭它。请注意,这可能会导致程序崩溃或出现意外行为。

在所有突然关闭文件的情况下,其内容都可能已损坏。

我认为 Windows 不会发生这种情况,因为 Windows 使用不同的锁定语义,并且不允许删除打开的文件。