O problema é que você parece ter uma cota de disco configurada e seu usuário não tem o direito de ocupar tanto espaço em /some_dir
. E não, a opção --parallel
não deve afetar isso.
Como solução alternativa, você pode dividir o arquivo em arquivos menores, classificar cada um deles separadamente e depois mesclá-los novamente em um único arquivo:
## split the file into 100M pieces named fileChunkNNNN
split -b100M file fileChunk
## Sort each of the pieces and delete the unsorted one
for f in fileChunk*; do sort "$f" > "$f".sorted && rm "$f"; done
## merge the sorted files
sort -T /some_dir/ --parallel=4 -muo file_sort.csv -k 1,3 fileChunk*.sorted
A mágica é a opção -m
do tipo GNU (de info sort
):
‘-m’
‘--merge’
Merge the given files by sorting them as a group. Each input file
must always be individually sorted. It always works to sort
instead of merge; merging is provided because it is faster, in the
case where it works.
Isso exigirá que você tenha ~ 180G livres para um arquivo 90G para armazenar todas as peças. No entanto, a classificação real não ocupará tanto espaço, pois você só estará classificando em blocos de 100 M.