技术与生活 / 一篇记录
固定的 /tmp 文件名为什么不可靠
两个任务使用相同临时路径时,可能互相覆盖,也可能读到另一轮任务的残留。mktemp 创建的独立目录使输入、中间结果与输出更容易保持一一对应。
先明确这里的区别
固定文件名可能与并发任务冲突,随机临时路径能降低覆盖风险。
以下示例使用 Bash,请在独立测试目录中理解输入、输出和退出码。
work=$(mktemp -d); printf '%s\n' "$work"
怎样判断处理正确
连续运行两次,应得到两个不同目录。
并行启动两份实验,检查目录名称和文件内容是否独立。随机命名解决不了所有权限问题;任务目录仍应限制访问,并明确何时清理。
将一轮任务所有中间文件放在同一个临时目录,更容易检查所有权与清理范围。失败时可以按策略保留目录用于诊断,但应明确保留时间,防止临时数据无限积累。
需要留意的是,生成目录后仍需限制权限,并在任务结束时清理自己的目录。
参考:Shell 文档。