디스크 공간 부족으로 인한 정렬 충돌을 올바르게 처리합니다.

디스크 공간 부족으로 인한 정렬 충돌을 올바르게 처리합니다.

sortHPC 시스템에서 대용량 파일(예: 500GB 이상)을 실행하고 있습니다 . sorts여러 작업이 단일 노드에서 실행될 수 있으며 sort작업의 370GB RAM 제한이 초과되면 해당 노드의 1TB 디스크 sort로 이동됩니다 . 공간이 부족 /scratch하면 예상대로 정렬이 중단됩니다. 다른 인스턴스를 위한 공간을 확보하기 /scratch위해 이 인스턴스에서 생성된 특정 파일을 정리하고 싶습니다 . 어떤 파일이 생성되었는지 확인할 수 있는 방법이 있나요 ?sortsortsort

답변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"TMPDIRsort

호출 후에 설정한 트랩은 mktemp스크립트가 종료될 때마다 디렉터리가 삭제되도록 보장합니다. 분명히 트랩을 사용하는 대신 rm -rf "$tmpdir"호출 후에 이를 수행 할 수 있습니다 .sort

관련 정보