我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
而不是使用陷阱。