在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