Eu tenho um trabalho em um sistema em lotes que é extremamente longo e produz toneladas de saída. Tanto que, na verdade, tenho que canalizar a saída padrão através do gzip para impedir que o nó do lote preencha sua área de trabalho e, subsequentemente, falhe.
longscript | gzip -9 > log.gz
Agora, gostaria de investigar a saída do trabalho enquanto ele ainda está em execução. Então eu faço isso:
gunzip log.gz
Isso dura muito tempo, pois é um arquivo enorme (vários GB). Eu posso ver o arquivo de saída sendo criado enquanto está em execução e posso vê-lo enquanto está sendo construído.
tail log
> some-line-of-the-log-file
tail log
> some-other-line-of-the-log-file
No entanto, finalmente, o gzip encontra o final do arquivo compactado. Como o trabalho ainda está em execução e o gzip ainda está gravando o arquivo, ainda não há rodapé adequado; portanto, isso acontece:
gzip: log.gz: unexpected end of file
Depois disso, o arquivo de log extraído é excluído, pois o gzip pensa que os dados extraídos corrompidos não têm utilidade para mim. Porém, eu discordo - mesmo que as duas últimas linhas sejam embaralhadas, a saída ainda é muito interessante para mim.
Como convencer o gzip a me deixar manter o arquivo "corrompido"?
gunzip -c
escreve saída para stdout ... talvez seja isso que você está procurando? Mantém o original inalterado.