tail -9999f fará algo próximo do que você deseja. Adicione mais 9s se o seu arquivo for maior.
Problemas:
- Arquivos binários podem não ter caracteres de nova linha.
tail -fesperará por uma nova linha antes de imprimir qualquer coisa. - A versão de
tailno Solaris (você não mencionou qual Solaris, mas provavelmente não importa) provavelmente não suporta essa opção. Pode suportartail -n 9999 -f. Você pode ter que adquirir a versão GNU da cauda. - Como o arquivo está em constante crescimento, existe uma condição de corrida entre descobrir o quão grande é e iniciar o processo final. Você pode perder o início do arquivo se não pedir linhas suficientes.
-
tailnão saberá quando você realmente terminou de gravar no arquivo, portanto, o processogzipnunca terminará. Não tenho certeza do que acontecerá quando vocêctrl-cterminar o processotail, mas é provável que o gzip limpe depois de si mesmo e remova o arquivo em que estava trabalhando.
Minha sugestão seria iniciar o programa original e canalizar a saída para o gzip assim:
./my_program | gunzip > new_file.txt
Dessa forma, o gunzip esperará se my_program estiver lento, mas ainda terminará quando o verdadeiro final do arquivo for indicado por my_program acabamento.
Você pode precisar reescrever seu programa para gravar em STDOUT em vez de diretamente em um arquivo.
Editar:
Depois de dar uma olhada na página do manual , três dos problemas acima podem ser resolvidos. Usar a opção -c <bytes> em vez de -n <lines> atenua o problema 1. Usar -n +0 ou -c +0 atenua o problema 3. O uso de --pid=<PID> terminará quando o programa original (em execução como <PID> ) terminar, o que atenua o problema 4.