Posso remover o arquivo original durante a execução de "ordenação"?

0

Estou classificando um arquivo enorme, com cerca de 400 gigabytes. Estou ficando sem espaço em disco e preciso fazer algo rapidamente.

Vamos supor que o arquivo original seja chamado de original_file. Então eu executo (simplificado) como "sort original_file | gzip -c > output_file"

Eu uso / home / tmp como um diretório temporário. Pelo que vejo, há muitos arquivos intermediários, como:

tmpA465

tmpB154

...

e assim por diante.

Os menores têm tamanho de 12 megabytes.

O maior tem ~ 182 megabytes.

Então, parece que o comando "sort" já dividiu o arquivo original em pequenos pedaços, e os classificou, e agora está mesclando-os em partes maiores (que serão, eventualmente, classificadas também). Por favor, corrija-me se estiver errado.

Posso remover o arquivo original agora mesmo sem encerrar o processo de classificação? Eu estive esperando por alguns dias para isso e é importante que o comando "sort" não falhe e eu receberei o arquivo de resultado, finalmente.

O sistema operacional é o servidor Ubuntu 13.04, x64.

Obrigado!

    
por Spaceman 29.05.2014 / 10:56

1 resposta

0

Se você tiver uma versão recente de sort (8.11+), você poderá acelerar o processo com a opção sort --parallel=N : você compartilhará o trabalho nos N núcleos. Isso pode realmente impulsionar o seu trabalho.

sort --parallel=N 

Para o algoritmo de classificação e se você quiser ver, por exemplo, Detalhes algorítmicos do comando Ordenação do UNIX .
Ele usa a variação de alguns Merge ordenação : isso significa que ele separa em bloco todo o trabalho, e após mesclar os blocos classificados. Você pode encontrar peças em /tmp .

Ele lê peças que se encaixam na memória. Se você tentar somar o tamanho de todas as tmp peças que encontrar, obterá um valor não necessário relacionado à porcentagem do trabalho realizado. Mas se for muito menos, você pode deduzir que ainda precisa de arquivo.

Eu tenho medo de que você não possa saber o tamanho da saída processada até a última passagem. O ponto chave deve estar na última passagem de classificação quando ela for mesclar a metade 2 apenas classificada. Pode continuar criando a primeira metade e depois a segunda. Ou pode continuar processando em paralelo as duas metades. Mas no primeiro caso, usará menos espaço no disco rígido. Então, suponho que você não possa excluir o arquivo.

Para ter uma resposta final para sua dúvida, você deve ver o código baixando sua versão do tipo de gnu ou procurando do git .

    
por 29.05.2014 / 12:32

Tags