该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
建议不要在 /tmp 或 /var/tmp 中存放需由用户掌握的文件
unix 系统的习惯做法是将系统运行过程中的产生的临时文件保存在 /tmp 和 /var/tmp 中。这两者的区别在于 /tmp 中保存的临时文件原则上将在系统重新启动后删除,这样做的好处是即使系统异常终止也不会最终留下无用的临时文件。但在实际应用中通常不会这么做,而是通过一个 cron 脚本或者守护进程定期检查 /tmp 下临时文件的最后更新时间,将最后更新时间超过一段时间(通常是1-30天左右)的临时文件予以删除。这样做的好处是既不会令临时文件泛滥成灾,又不会在执行一些相当耗时的工作如编译大型软件时,因为系统意外重启而丢失已经生成的工作成果。
对于一些需要提高文件存取效率,同时不担心丢失文件的场合(如普通桌面应用,或者加了UPS的服务器),通常会将 tmpfs 文件系统挂载到 /tmp 上。这样系统一旦重启,/tmp 下的文件立即丢失。
与 /tmp 不同的是,/var/tmp 中保存的临时文件原则上不会被系统自动清除。清除 /var/tmp 下临时文件的责任由用户承担。
从用户的角度上讲,/tmp 下的临时文件可以称为“短期临时文件”。/var/tmp 下的临时文件可以称为“长期临时文件”。这两者还有个共同点,那就是虽然用户可以在里面创建临时文件(用户拥有目录的使用权),但这两者都为系统所有(系统拥有目录的所有权)。原则上在必要时系统可以不经用户同意而自行删除里面的临时文件。所以这两者都不适合存放需要由用户完全掌控的文件(如用户资料等)。
因此,用户在创建临时文件时,应根据实际需要选择合适的位置来保存临时文件。如果希望由系统自动清除,则将临时文件保存在 /tmp 中。如果用户希望在需要的时候自行清除临时文件,则将临时文件保存在 /var/tmp 中。
至于需要长期保存的有价值的资料应尽量保存在用户自己的目录中。因为即使 /var/tmp 下的文件不会被自动清除,也保不住那天系统管理员(root),或者哪个“垃圾清除软件”会为了腾出磁盘空间而将 /var/tmp 下的文件“一锅端”。到那时就麻烦了。