正确处理由于磁盘空间不足而导致的排序崩溃

正确处理由于磁盘空间不足而导致的排序崩溃

sort在 HPC 系统上运行大文件(例如 500GB 以上)。sorts单个节点上可能会运行多个作业,当sort超出作业的 370GB RAM 限制时,sort会转到/scratch该节点上的 1TB 磁盘。当/scratch空间不足时,排序会按预期崩溃。我想清理该实例创建的特定文件,以便sort为其他实例腾出空间sort。有什么方法可以确定sort创建了哪些文件?

答案1

要在运行失败后进行清理sort,您需要确切地知道实用程序终止后留下了哪些临时文件。如果将临时文件的创建限制在稍后删除的目录中,这会变得更容易。

您可以使用 创建一个临时目录mktemp,然后通过设置其路径名来sort使用该目录。TMPDIR

tmpdir=$( mktemp -d /scratch/sort-XXXXXXXX )
trap "rm -rf '$tmpdir'" EXIT

TMPDIR=$tmpdir sort -t$'\t' -k1,1 -k2,2 -k5,5nr -o sorted.tab --parallel=4 unsorted.tab

这会在 下创建一个临时目录/scratch,将其路径名分配给 shell 变量tmpdir,然后TMPDIR在调用 时将环境变量设置为此值sort

sort实用程序可能有一个-T选项,您可以将其用作-T "$tmpdir",但TMPDIR在 环境中进行设置sort是可移植的。

我在调用后设置的陷阱mktemp可确保每当脚本退出时都会删除该目录。显然,您可以rm -rf "$tmpdir"在调用后执行sort而不是使用陷阱。

相关内容