sort
HPCシステムで大容量ファイル(500 GB以上)を実行しています。sorts
複数のジョブが単一ノードで実行でき、ジョブのsort
370 GB RAM制限を超えると、そのノードの1 TBディスクsort
に移動されます。スペースが不足する/scratch
と、期待どおりに並べ替えが中断されます。他のインスタンスのスペースを解放する/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
そのパス名をシェル変数に割り当て、tmpdir
呼び出しTMPDIR
時に環境変数をこの値に設定しますsort
。
ユーティリティにはとして使用できるオプションがsort
ありますが、環境内で設定することは移植可能です。-T
-T "$tmpdir"
TMPDIR
sort
呼び出し後に設定したトラップは、スクリプトがmktemp
終了するたびにディレクトリが削除されることを保証します。明らかにトラップを使用する代わりに、rm -rf "$tmpdir"
呼び出し後にこれを行うことができます。sort