【问题标题】:How do I create a temporary directory using mktemp in my current working directory?如何在当前工作目录中使用 mktemp 创建临时目录?
【发布时间】:2016-09-15 20:24:17
【问题描述】:

我创建了一个将多个程序串在一起的管道,不幸的是,这些程序在 /tmp 文件夹中创建了大量临时文件,当使用大型数据集时,我的管道崩溃,因为 /tmp 文件夹已满。

如何导出临时文件,以便在运行管道的当前工作目录中创建它们,而不是在 /tmp 文件夹中?

目前我已尝试将TMPDIR 环境变量导出到我当前工作目录中已创建的目录/work,但仍在/tmp 文件夹中创建临时文件:

export TMPDIR=$(mktemp -d --tmpdir=/work)
<script>
rm -rf $TMPDIR

程序没有为创建的临时文件设置不同的输出文件夹的选项。

【问题讨论】:

  • 您收到什么错误信息?请务必在可用时提及错误消息。
  • 管道的错误信息?这是一个典型的 IOError: No space available on device 错误,在 /tmp 文件已满时很常见。
  • 您的硬盘上还剩多少空间(即df -h . )?
  • 我有两个 4TB 硬盘驱动器,我负责大部分的临时工作。一个是完全空的,另一个是 50% 满的。我的 /tmp 目录只有 9gb 的可用空间,这是问题的根源。

标签: tmp mktemp


【解决方案1】:

如果目录work 在您的当前目录中,只需将/work 更改为work/work 表示您有一个名为/work 的顶级目录。如果没有正斜杠,它将是一个相对目录。

我刚刚在我的电脑上测试了这段代码。我注意到没有文件写入/tmp

mkdir work
export TMPDIR=$(mktemp -d --tmpdir=work)
ls work
# tmp.AWA4dTERha
rm -rf $TMPDIR
ls work
# --no output--

【讨论】:

  • 太好了,让我试一试!
  • 似乎没有解决问题。 /tmp 目录中仍在创建临时文件。
  • @System 刚刚更新了我的答案以包含我测试过的代码。
猜你喜欢
  • 2016-07-29
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
相关资源
最近更新 更多