我应该删除脚本创建的临时文件吗?

时间:2014-12-29 13:51:33

标签: python bash shell operating-system temp

这是一个常见的问题,并非专门针对某些语言或平台。谁负责在系统$ TEMP文件夹中创建的文件? 如果这是我的职责,我为什么要关心把这个文件放在哪里?我可以把它放在任何地方,结果相同。 如果是OS的责任,我可以在使用后立即忘记这个文件吗?

感谢并抱歉我的基本英语。

2 个答案:

答案 0 :(得分:1)

没有标准也没有共同规则。在大多数操作系统中,临时文件夹中的文件会堆积起来。有些系统试图通过在一段时间后自动删除其中的文件来防止这种情况,但这有时会导致悲痛,例如长时间运行的进程或崩溃备份。

$TEMP存在的原因是许多程序(特别是在RAM稀缺的早期)需要一个存储临时数据的地方,因为超级计算机&#34;在20世纪70年代只有几KB的RAM(是的,N * 1024字节,其中N <&lt; <100 - 你甚至无法将鼠标光标的图像融入其中)。大约在1980年,64KB很多。

解决方案是一个任何人都可以写的文件夹。安全当时并不是个问题,记忆是。

随着时间的推移,操作系统开始获得更好的系统来创建临时文件并进行清理,但向后兼容性阻止了所有人的干净工作。溶液

因此,即使您知道数据的最终位置,您也有责任自行清理文件。为了使错误分析更容易,我倾向于编写我的代码,只有当一切都很好时才删除文件 - 这样,我可以查看中间结果来找出问题所在。但是日志记录通常是更好,更安全的解决方案。

相关:Memory prices 1957-2014 12KB的Ram在1973年花费了4美元和680美元。

答案 1 :(得分:1)

作为一般规则,您应该删除您创建的临时文件。

回想一下,$ TEMP目录是其他程序可以使用的共享资源。无法删除临时文件将对使用$ TEMP的其他程序产生影响。

会产生什么样的影响?这将取决于其他计划。如果那些其他程序创建了大量临时文件,那么它们的执行速度会变慢,因为创建新的临时文件需要更长的时间,因为必须在每个临时文件创建时扫描目录以确保文件名是唯一的。

考虑以下内容(基于真实事件)...... 在过去的几年里,我的工作小组不得不使用英特尔C编译器。我们发现,随着时间的推移,它似乎正在放缓。也就是说,使用它进行理智测试所花费的时间越来越长。这也适用于构建/编译单个C文件。我们追查了这个问题 ICC正在打开,统计和阅读$ TEMP下的每个文件。为了什么目的,我不知道。尽管可以认为问题在于ICC,但是$ TEMP下的文件的存在正在减缓它和我们的开发团队的速度。删除这些临时文件导致完整性检查在不到半小时内运行而不是超过两个 - 节省了大量时间。

希望这有帮助。