/tmp 已满但...空

/tmp 已满但...空

在Python程序中,我使用np.memmaps,它利用/tmp目录来处理大量数组。我确保每次使用此代码时都/tmp运行以定期清除。rm -rf /tmp/*然而最近,我的代码停止工作并向我抛出“总线错误(核心转储)”。

现在,即使在终端中使用自动完成也会导致:bash: cannot create temp file for here-document: No space left on device

我认为打字df -h给了我罪魁祸首:

tmpfs            32G   32G     0 100% /tmp

然而,跑步sudo rm -rf /tmp/*只会让我回到

tmpfs            32G   30G  1,9G  94% /tmp

知道发生了什么事以及如何解决它吗?

答案1

这个命令会让你了解真相:

sudo lsof -n | grep /tmp |grep deleted

在 Unix 中,已删除的文件仍然存在于文件系统中并占用其中的空间,直到使用它们的应用程序关闭文件或该应用程序终止。

因此,找到打开已删除文件的进程并重新启动或终止它们。

强制关闭上述文件描述符而不终止使用它们的应用程序会很棒,但 Linux 内核不支持revoke()系统调用:https://bugzilla.kernel.org/show_bug.cgi?id=14505

相关内容