Experimente pv
, visualizador de canais
Geralmente, tenho um trabalho de longa duração em que um aplicativo lê um arquivo grande (> 2 GB) e executa o processamento em cada registro.
Existe algum comando do UNIX que eu possa usar para ver a profundidade do processo? O aplicativo terá apenas um identificador de arquivo para o arquivo de entrada.
Experimente pv
, visualizador de canais
Eu sempre me perguntei se o "offset" do lsof informa a posição atual de leitura do arquivo no arquivo, mas a documentação realmente não explica isso claramente e eu nunca me preocupei em testar ou verificar minhas suposições. link
Ao escrever processos de longa duração, tenho a tendência de fazer com que eles gravem informações em um arquivo de log que eu possa examinar periodicamente (por exemplo, tail -f) ou fazer com que relatem periodicamente o progresso (por exemplo, uma opção -v uma vez por segundo).
Este programa aceita pipes / STDIN / STDOUT? Se assim for, você está com sorte. Vou demonstrar com md5sum'ing um arquivo grande:
$ pv 2GB.zero | md5sum -
1.56GB 0:00:31 [60.2MB/s] [===============================> ] 80% ETA 0:00:07
f3444be3893c1b9b6fa9dd1acde671a9 -
pv "{filename}" irá ler o arquivo, canalizá-lo para qualquer coisa que suporte um pipe.
Você também pode fazer cat "{filename}"|pv| md5sum -
, mas pv não saberá quantos bytes o arquivo é, portanto, saberá apenas quão rápido está indo, agora quanto resta.
As possibilidades são infinitas. Sempre que você estiver usando um pipe ou redirecionando para um arquivo, basta adicionar pv no pipeline para informar a você o quão rápido os dados estão passando pelo canal! :)
Tags unix